Mercurial > pidgin
annotate libpurple/protocols/jabber/message.c @ 30315:c492cef26b88
jabber: Only take the character data from a <body/> element (non-XHTML)
rfc3921 and draft-ietf-xmpp-3921bis talk about the XML character data
of the <body/> and 3921bis also says it MUST NOT contain mixed content
(see 3.2.2 of the XML 1.0 spec). This should fix Google Talk's private
chats showing an empty line whenever someone joins/leaves (caused by
some ugly XMPP traffic from Google), and seems correct to me otherwise.
This was changed from _get_data to _to_str 7 years ago in
76319226b46e6e64b1ef61933baeb43a5a484a61.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sat, 31 Jul 2010 20:39:55 +0000 |
parents | 7227c51730b0 |
children | 66c175a474a6 |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15822 | 2 * purple - Jabber Protocol Plugin |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
28048
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27637
diff
changeset
|
4 * Purple is the legal property of its developers, whose names are too numerous |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27637
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27637
diff
changeset
|
6 * source distribution. |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * along with this program; if not, write to the Free Software |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19310
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
22 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include "server.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "util.h" |
26694
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
29 #include "adhoccommands.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "buddy.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 #include "chat.h" |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
32 #include "data.h" |
15522
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
33 #include "google.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 #include "message.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 #include "xmlnode.h" |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
36 #include "pep.h" |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
37 #include "smiley.h" |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
38 #include "iq.h" |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
39 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
40 #include <string.h> |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 void jabber_message_free(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
43 { |
15917 | 44 g_free(jm->from); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 g_free(jm->to); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 g_free(jm->id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 g_free(jm->subject); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 g_free(jm->body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 g_free(jm->xhtml); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 g_free(jm->password); |
20192
41e39193e247
applied changes from 326d6e6c8c6a955cdba84f1f802fc21ec3e6b662
Richard Laager <rlaager@wiktel.com>
parents:
19718
diff
changeset
|
51 g_free(jm->error); |
41e39193e247
applied changes from 326d6e6c8c6a955cdba84f1f802fc21ec3e6b662
Richard Laager <rlaager@wiktel.com>
parents:
19718
diff
changeset
|
52 g_free(jm->thread_id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 g_list_free(jm->etc); |
20192
41e39193e247
applied changes from 326d6e6c8c6a955cdba84f1f802fc21ec3e6b662
Richard Laager <rlaager@wiktel.com>
parents:
19718
diff
changeset
|
54 g_list_free(jm->eventitems); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
56 g_free(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 static void handle_chat(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 JabberID *jid = jabber_id_new(jm->from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 |
29009
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
63 PurpleConnection *gc; |
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
64 PurpleAccount *account; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 if(!jid) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
70 |
29009
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
71 gc = jm->js->gc; |
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
72 account = purple_connection_get_account(gc); |
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
73 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 jb = jabber_buddy_find(jm->js, jm->from, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 jbr = jabber_buddy_find_resource(jb, jid->resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 if(!jm->xhtml && !jm->body) { |
29919
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
78 if (jbr && jm->chat_state != JM_STATE_NONE) |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
79 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
27512
ed284238509b
Use Entity Capabilities to pick up Chat States support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27511
diff
changeset
|
80 |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
81 if(JM_STATE_COMPOSING == jm->chat_state) { |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
82 serv_got_typing(gc, jm->from, 0, PURPLE_TYPING); |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
83 } else if(JM_STATE_PAUSED == jm->chat_state) { |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
84 serv_got_typing(gc, jm->from, 0, PURPLE_TYPED); |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
85 } else if(JM_STATE_GONE == jm->chat_state) { |
15822 | 86 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
87 jm->from, account); |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
88 if (conv && jid->node && jid->domain) { |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
89 char buf[256]; |
15822 | 90 PurpleBuddy *buddy; |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
91 |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
92 g_snprintf(buf, sizeof(buf), "%s@%s", jid->node, jid->domain); |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
93 |
29009
4fb74d76c2df
jabber: Use some convenience variables here.
Paul Aurich <paul@darkrain42.org>
parents:
29008
diff
changeset
|
94 if ((buddy = purple_find_buddy(account, buf))) { |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
95 const char *who; |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
96 char *escaped; |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
97 |
15822 | 98 who = purple_buddy_get_alias(buddy); |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
99 escaped = g_markup_escape_text(who, -1); |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
100 |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
101 g_snprintf(buf, sizeof(buf), |
16890 | 102 _("%s has left the conversation."), escaped); |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20106
diff
changeset
|
103 g_free(escaped); |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
104 |
15822 | 105 /* At some point when we restructure PurpleConversation, |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
106 * this should be able to be implemented by removing the |
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
107 * user from the conversation like we do with chats now. */ |
15822 | 108 purple_conversation_write(conv, "", buf, |
109 PURPLE_MESSAGE_SYSTEM, time(NULL)); | |
15659
94a19bde141d
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@wiktel.com>
parents:
15648
diff
changeset
|
110 } |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
111 } |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
112 serv_got_typing_stopped(gc, jm->from); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
113 |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
114 } else { |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
115 serv_got_typing_stopped(gc, jm->from); |
15648
e86623eb3b79
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@gmail.com>
parents:
15647
diff
changeset
|
116 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 } else { |
29552
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
118 if (jid->resource) { |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
119 /* |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
120 * We received a message from a specific resource, so |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
121 * we probably want a reply to go to this specific |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
122 * resource (i.e. bind/lock the conversation to this |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
123 * resource). |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
124 * |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
125 * This works because purple_conv_im_send gets the name |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
126 * from purple_conversation_get_name() |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
127 */ |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
128 PurpleConversation *conv; |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
129 |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
130 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
131 jm->from, account); |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
132 if (conv && !g_str_equal(jm->from, |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
133 purple_conversation_get_name(conv))) { |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
134 purple_debug_info("jabber", "Binding conversation to %s\n", |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
135 jm->from); |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
136 purple_conversation_set_name(conv, jm->from); |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
137 } |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
138 } |
b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <paul@darkrain42.org>
parents:
29043
diff
changeset
|
139 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 if(jbr) { |
29919
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
141 /* Treat SUPPORTED as a terminal with no escape :) */ |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
142 if (jbr->chat_states != JABBER_CHAT_STATES_SUPPORTED) { |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
143 if (jm->chat_state != JM_STATE_NONE) |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
144 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
145 else |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
146 jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; |
716d6bb38829
jabber: Refined logic for determining "is typing" support.
Paul Aurich <paul@darkrain42.org>
parents:
29915
diff
changeset
|
147 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 if(jbr->thread_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 jbr->thread_id = g_strdup(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
153 |
15522
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
154 if (jm->js->googletalk && jm->xhtml == NULL) { |
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
155 char *tmp = jm->body; |
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
156 jm->body = jabber_google_format_to_html(jm->body); |
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
157 g_free(tmp); |
ccbdf500f13a
Google Talk uses structured text formatting where *this* is bold
Sean Egan <seanegan@gmail.com>
parents:
15373
diff
changeset
|
158 } |
29014
b676cb5b4595
jabber: Cleanup (and drop that unnormalized find function)!
Paul Aurich <paul@darkrain42.org>
parents:
29010
diff
changeset
|
159 serv_got_im(gc, jm->from, jm->xhtml ? jm->xhtml : jm->body, 0, jm->sent); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 static void handle_headline(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 char *title; |
17885
b8de63d3bf89
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17877
diff
changeset
|
168 GString *body; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 GList *etc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 |
17885
b8de63d3bf89
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17877
diff
changeset
|
171 if(!jm->xhtml && !jm->body) |
b8de63d3bf89
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17877
diff
changeset
|
172 return; /* ignore headlines without any content */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
173 |
17885
b8de63d3bf89
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17877
diff
changeset
|
174 body = g_string_new(""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 title = g_strdup_printf(_("Message from %s"), jm->from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 if(jm->xhtml) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 g_string_append(body, jm->xhtml); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 else if(jm->body) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 g_string_append(body, jm->body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 for(etc = jm->etc; etc; etc = etc->next) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 xmlnode *x = etc->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 const char *xmlns = xmlnode_get_namespace(x); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
185 if(xmlns && !strcmp(xmlns, NS_OOB_X_DATA)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 xmlnode *url, *desc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 char *urltxt, *desctxt; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 url = xmlnode_get_child(x, "url"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 desc = xmlnode_get_child(x, "desc"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
192 if(!url || !desc) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
195 urltxt = xmlnode_get_data(url); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 desctxt = xmlnode_get_data(desc); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 /* I'm all about ugly hacks */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 if(body->len && jm->body && !strcmp(body->str, jm->body)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
200 g_string_printf(body, "<a href='%s'>%s</a>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
201 urltxt, desctxt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 g_string_append_printf(body, "<br/><a href='%s'>%s</a>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 urltxt, desctxt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
206 g_free(urltxt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 g_free(desctxt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
210 |
15822 | 211 purple_notify_formatted(jm->js->gc, title, jm->subject ? jm->subject : title, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 NULL, body->str, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 g_free(title); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 g_string_free(body, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
217 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
218 static void handle_groupchat(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
219 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
220 JabberID *jid = jabber_id_new(jm->from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 JabberChat *chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
223 if(!jid) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 chat = jabber_chat_find(jm->js, jid->node, jid->domain); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 if(!chat) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
231 if(jm->subject) { |
15822 | 232 purple_conv_chat_set_topic(PURPLE_CONV_CHAT(chat->conv), jid->resource, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 jm->subject); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 if(!jm->xhtml && !jm->body) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 char *msg, *tmp, *tmp2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 tmp = g_markup_escape_text(jm->subject, -1); |
15822 | 237 tmp2 = purple_markup_linkify(tmp); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 if(jid->resource) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
239 msg = g_strdup_printf(_("%s has set the topic to: %s"), jid->resource, tmp2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
241 msg = g_strdup_printf(_("The topic is: %s"), tmp2); |
15822 | 242 purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", msg, PURPLE_MESSAGE_SYSTEM, jm->sent); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 g_free(tmp2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 |
30315
c492cef26b88
jabber: Only take the character data from a <body/> element (non-XHTML)
Paul Aurich <paul@darkrain42.org>
parents:
30201
diff
changeset
|
249 purple_debug_warning("jabber CHAT", "MUC message: '%s', '%s'\n", |
c492cef26b88
jabber: Only take the character data from a <body/> element (non-XHTML)
Paul Aurich <paul@darkrain42.org>
parents:
30201
diff
changeset
|
250 jm->xhtml, jm->body); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 if(jm->xhtml || jm->body) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 if(jid->resource) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 serv_got_chat_in(jm->js->gc, chat->id, jid->resource, |
15822 | 254 jm->delayed ? PURPLE_MESSAGE_DELAYED : 0, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 jm->xhtml ? jm->xhtml : jm->body, jm->sent); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 else if(chat->muc) |
15822 | 257 purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 jm->xhtml ? jm->xhtml : jm->body, |
15822 | 259 PURPLE_MESSAGE_SYSTEM, jm->sent); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
262 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
263 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 static void handle_groupchat_invite(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
266 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 GHashTable *components; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 JabberID *jid = jabber_id_new(jm->to); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
269 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
270 if(!jid) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 |
15536
b081c81a4dea
Get rid of some unnecessary string duping
Mark Doliner <mark@kingant.net>
parents:
15522
diff
changeset
|
273 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 |
15536
b081c81a4dea
Get rid of some unnecessary string duping
Mark Doliner <mark@kingant.net>
parents:
15522
diff
changeset
|
275 g_hash_table_replace(components, "room", g_strdup(jid->node)); |
b081c81a4dea
Get rid of some unnecessary string duping
Mark Doliner <mark@kingant.net>
parents:
15522
diff
changeset
|
276 g_hash_table_replace(components, "server", g_strdup(jid->domain)); |
b081c81a4dea
Get rid of some unnecessary string duping
Mark Doliner <mark@kingant.net>
parents:
15522
diff
changeset
|
277 g_hash_table_replace(components, "handle", g_strdup(jm->js->user->node)); |
b081c81a4dea
Get rid of some unnecessary string duping
Mark Doliner <mark@kingant.net>
parents:
15522
diff
changeset
|
278 g_hash_table_replace(components, "password", g_strdup(jm->password)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
281 serv_got_chat_invite(jm->js->gc, jm->to, jm->from, jm->body, components); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 static void handle_error(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 char *buf; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 if(!jm->body) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 buf = g_strdup_printf(_("Message delivery to %s failed: %s"), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 jm->from, jm->error ? jm->error : ""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16890
diff
changeset
|
294 purple_notify_formatted(jm->js->gc, _("XMPP Message Error"), _("XMPP Message Error"), buf, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 jm->xhtml ? jm->xhtml : jm->body, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 g_free(buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
300 static void handle_buzz(JabberMessage *jm) { |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
301 PurpleBuddy *buddy; |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
302 PurpleAccount *account; |
24878
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
303 |
17889
9686d549f084
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <pidgin@monitzer.com>
parents:
17888
diff
changeset
|
304 /* Delayed buzz MUST NOT be accepted */ |
9686d549f084
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <pidgin@monitzer.com>
parents:
17888
diff
changeset
|
305 if(jm->delayed) |
9686d549f084
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <pidgin@monitzer.com>
parents:
17888
diff
changeset
|
306 return; |
24878
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
307 |
17890
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
308 /* Reject buzz when it's not enabled */ |
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
309 if(!jm->js->allowBuzz) |
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
310 return; |
24878
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
311 |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
312 account = purple_connection_get_account(jm->js->gc); |
24878
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
313 |
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
314 if ((buddy = purple_find_buddy(account, jm->from)) == NULL) |
17889
9686d549f084
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <pidgin@monitzer.com>
parents:
17888
diff
changeset
|
315 return; /* Do not accept buzzes from unknown people */ |
9686d549f084
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <pidgin@monitzer.com>
parents:
17888
diff
changeset
|
316 |
24878
689cfb82242e
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evan.s@dreskin.net>
parents:
24721
diff
changeset
|
317 /* xmpp only has 1 attention type, so index is 0 */ |
25707
b707ec143eee
Give username (JID) to purple_prpl_got_attention, not alias
Marcus Lundblad <ml@update.uu.se>
parents:
25701
diff
changeset
|
318 purple_prpl_got_attention(jm->js->gc, jm->from, 0); |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
319 } |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
320 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
321 /* used internally by the functions below */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
322 typedef struct { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
323 gchar *cid; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
324 gchar *alt; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
325 } JabberSmileyRef; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
326 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
327 |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
328 static void |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
329 jabber_message_get_refs_from_xmlnode_internal(const xmlnode *message, |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
330 GHashTable *table) |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
331 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
332 xmlnode *child; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
333 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
334 for (child = xmlnode_get_child(message, "img") ; child ; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
335 child = xmlnode_get_next_twin(child)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
336 const gchar *src = xmlnode_get_attrib(child, "src"); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
337 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
338 if (g_str_has_prefix(src, "cid:")) { |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
339 const gchar *cid = src + 4; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
340 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
341 /* if we haven't "fetched" this yet... */ |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
342 if (!g_hash_table_lookup(table, cid)) { |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
343 /* take a copy of the cid and let the SmileyRef own it... */ |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
344 gchar *temp_cid = g_strdup(cid); |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
345 JabberSmileyRef *ref = g_new0(JabberSmileyRef, 1); |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
346 const gchar *alt = xmlnode_get_attrib(child, "alt"); |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
347 ref->cid = temp_cid; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
348 /* if there is no "alt" string, use the cid... |
24062
f1ead28fcc5a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <ml@update.uu.se>
parents:
24061
diff
changeset
|
349 include the entire src, eg. "cid:.." to avoid linkification */ |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
350 if (alt && alt[0] != '\0') { |
24063
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
351 /* workaround for when "alt" is set to the value of the |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
352 CID (which Jabbim seems to do), to avoid it showing up |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
353 as an mailto: link */ |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
354 if (purple_email_is_valid(alt)) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
355 ref->alt = g_strdup_printf("smiley:%s", alt); |
24063
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
356 } else { |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
357 ref->alt = g_strdup(alt); |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
358 } |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
359 } else { |
24062
f1ead28fcc5a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <ml@update.uu.se>
parents:
24061
diff
changeset
|
360 ref->alt = g_strdup(src); |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
361 } |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
362 g_hash_table_insert(table, temp_cid, ref); |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
363 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
364 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
365 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
366 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
367 for (child = message->child ; child ; child = child->next) { |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
368 jabber_message_get_refs_from_xmlnode_internal(child, table); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
369 } |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
370 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
371 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
372 static gboolean |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
373 jabber_message_get_refs_steal(gpointer key, gpointer value, gpointer user_data) |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
374 { |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
375 GList **refs = (GList **) user_data; |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
376 JabberSmileyRef *ref = (JabberSmileyRef *) value; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
377 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
378 *refs = g_list_append(*refs, ref); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
379 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
380 return TRUE; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
381 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
382 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
383 static GList * |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
384 jabber_message_get_refs_from_xmlnode(const xmlnode *message) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
385 { |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
386 GList *refs = NULL; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
387 GHashTable *unique_refs = g_hash_table_new(g_str_hash, g_str_equal); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
388 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
389 jabber_message_get_refs_from_xmlnode_internal(message, unique_refs); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
390 (void) g_hash_table_foreach_steal(unique_refs, |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
391 jabber_message_get_refs_steal, (gpointer) &refs); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
392 g_hash_table_destroy(unique_refs); |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
393 return refs; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
394 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
395 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
396 static gchar * |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
397 jabber_message_xml_to_string_strip_img_smileys(xmlnode *xhtml) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
398 { |
24180
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
399 gchar *markup = xmlnode_to_str(xhtml, NULL); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
400 int len = strlen(markup); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
401 int pos = 0; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
402 GString *out = g_string_new(NULL); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
403 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
404 while (pos < len) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
405 /* this is a bit cludgy, maybe there is a better way to do this... |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
406 we need to find all <img> tags within the XHTML and replace those |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
407 tags with the value of their "alt" attributes */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
408 if (g_str_has_prefix(&(markup[pos]), "<img")) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
409 xmlnode *img = NULL; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
410 int pos2 = pos; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
411 const gchar *src; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
412 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
413 for (; pos2 < len ; pos2++) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
414 if (g_str_has_prefix(&(markup[pos2]), "/>")) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
415 pos2 += 2; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
416 break; |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
417 } else if (g_str_has_prefix(&(markup[pos2]), "</img>")) { |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
418 pos2 += 5; |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
419 break; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
420 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
421 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
422 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
423 /* note, if the above loop didn't find the end of the <img> tag, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
424 it the parsed string will be until the end of the input string, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
425 in which case xmlnode_from_str will bail out and return NULL, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
426 in this case the "if" statement below doesn't trigger and the |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
427 text is copied unchanged */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
428 img = xmlnode_from_str(&(markup[pos]), pos2 - pos); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
429 src = xmlnode_get_attrib(img, "src"); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
430 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
431 if (g_str_has_prefix(src, "cid:")) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
432 const gchar *alt = xmlnode_get_attrib(img, "alt"); |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
433 /* if the "alt" attribute is empty, put the cid as smiley string */ |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
434 if (alt && alt[0] != '\0') { |
24063
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
435 /* if the "alt" is the same as the CID, as Jabbim does, |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
436 this prevents linkification... */ |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
437 if (purple_email_is_valid(alt)) { |
24179
2c6c9d72f54f
A couple of compile warning fixes, a couple of memory leak plugs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24063
diff
changeset
|
438 gchar *safe_alt = g_strdup_printf("smiley:%s", alt); |
24063
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
439 out = g_string_append(out, safe_alt); |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
440 g_free(safe_alt); |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
441 } else { |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
442 out = g_string_append(out, alt); |
463240455f55
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <ml@update.uu.se>
parents:
24062
diff
changeset
|
443 } |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
444 } else { |
24062
f1ead28fcc5a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <ml@update.uu.se>
parents:
24061
diff
changeset
|
445 out = g_string_append(out, src); |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
446 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
447 pos += pos2 - pos; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
448 } else { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
449 out = g_string_append_c(out, markup[pos]); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
450 pos++; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
451 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
452 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
453 xmlnode_free(img); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
454 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
455 } else { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
456 out = g_string_append_c(out, markup[pos]); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
457 pos++; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
458 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
459 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
460 |
24180
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
461 g_free(markup); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
462 return g_string_free(out, FALSE); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
463 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
464 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
465 static void |
29633
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
466 jabber_message_add_remote_smileys(JabberStream *js, const gchar *who, |
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
467 const xmlnode *message) |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
468 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
469 xmlnode *data_tag; |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
470 for (data_tag = xmlnode_get_child_with_namespace(message, "data", NS_BOB) ; |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
471 data_tag ; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
472 data_tag = xmlnode_get_next_twin(data_tag)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
473 const gchar *cid = xmlnode_get_attrib(data_tag, "cid"); |
29633
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
474 const JabberData *data = jabber_data_find_remote_by_cid(js, who, cid); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
475 |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
476 if (!data && cid != NULL) { |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
477 /* we haven't cached this already, let's add it */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
478 JabberData *new_data = jabber_data_create_from_xml(data_tag); |
29630
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29626
diff
changeset
|
479 |
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29626
diff
changeset
|
480 if (new_data) { |
29633
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
481 jabber_data_associate_remote(js, who, new_data); |
29630
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29626
diff
changeset
|
482 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
483 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
484 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
485 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
486 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
487 static void |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
488 jabber_message_request_data_cb(JabberData *data, gchar *alt, |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
489 gpointer userdata) |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
490 { |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
491 PurpleConversation *conv = (PurpleConversation *) userdata; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
492 |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
493 if (data) { |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
494 purple_conv_custom_smiley_write(conv, alt, |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
495 jabber_data_get_data(data), |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
496 jabber_data_get_size(data)); |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
497 purple_conv_custom_smiley_close(conv, alt); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
498 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
499 |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
500 g_free(alt); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
501 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
502 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 void jabber_message_parse(JabberStream *js, xmlnode *packet) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
505 JabberMessage *jm; |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
506 const char *id, *from, *to, *type; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 xmlnode *child; |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
508 gboolean signal_return; |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
509 |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
510 from = xmlnode_get_attrib(packet, "from"); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
511 id = xmlnode_get_attrib(packet, "id"); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
512 to = xmlnode_get_attrib(packet, "to"); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
513 type = xmlnode_get_attrib(packet, "type"); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
514 |
28517
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28513
diff
changeset
|
515 signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_connection_get_prpl(js->gc), |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
516 "jabber-receiving-message", js->gc, type, id, from, to, packet)); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
517 if (signal_return) |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
518 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
520 jm = g_new0(JabberMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 jm->js = js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 jm->sent = time(NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
523 jm->delayed = FALSE; |
27101
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
524 jm->chat_state = JM_STATE_NONE; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
525 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 if(type) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
527 if(!strcmp(type, "normal")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 jm->type = JABBER_MESSAGE_NORMAL; |
20058
5103485b4b26
Plug some memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19718
diff
changeset
|
529 else if(!strcmp(type, "chat")) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 jm->type = JABBER_MESSAGE_CHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 else if(!strcmp(type, "groupchat")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 jm->type = JABBER_MESSAGE_GROUPCHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 else if(!strcmp(type, "headline")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 jm->type = JABBER_MESSAGE_HEADLINE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
535 else if(!strcmp(type, "error")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 jm->type = JABBER_MESSAGE_ERROR; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 jm->type = JABBER_MESSAGE_OTHER; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
540 jm->type = JABBER_MESSAGE_NORMAL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
541 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
543 jm->from = g_strdup(from); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
544 jm->to = g_strdup(to); |
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26838
diff
changeset
|
545 jm->id = g_strdup(id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 for(child = packet->child; child; child = child->next) { |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
548 const char *xmlns = xmlnode_get_namespace(child); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 if(child->type != XMLNODE_TYPE_TAG) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 |
24721
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
552 if(!strcmp(child->name, "error")) { |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
553 const char *code = xmlnode_get_attrib(child, "code"); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
554 char *code_txt = NULL; |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
555 char *text = xmlnode_get_data(child); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
556 if (!text) { |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
557 xmlnode *enclosed_text_node; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
558 |
24721
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
559 if ((enclosed_text_node = xmlnode_get_child(child, "text"))) |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
560 text = xmlnode_get_data(enclosed_text_node); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
561 } |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
562 |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
563 if(code) |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
564 code_txt = g_strdup_printf(_("(Code %s)"), code); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
565 |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
566 if(!jm->error) |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
567 jm->error = g_strdup_printf("%s%s%s", |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
568 text ? text : "", |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
569 text && code_txt ? " " : "", |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
570 code_txt ? code_txt : ""); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
571 |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
572 g_free(code_txt); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
573 g_free(text); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
574 } else if (xmlns == NULL) { |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
575 /* QuLogic: Not certain this is correct, but it would have happened |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
576 with the previous code. */ |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
577 if(!strcmp(child->name, "x")) |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
578 jm->etc = g_list_append(jm->etc, child); |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
579 /* The following tests expect xmlns != NULL */ |
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
580 continue; |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
581 } else if(!strcmp(child->name, "subject") && !strcmp(xmlns, NS_XMPP_CLIENT)) { |
26684
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26617
diff
changeset
|
582 if(!jm->subject) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 jm->subject = xmlnode_get_data(child); |
26684
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26617
diff
changeset
|
584 if(!jm->subject) |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26617
diff
changeset
|
585 jm->subject = g_strdup(""); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26617
diff
changeset
|
586 } |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
587 } else if(!strcmp(child->name, "thread") && !strcmp(xmlns, NS_XMPP_CLIENT)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 if(!jm->thread_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 jm->thread_id = xmlnode_get_data(child); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
590 } else if(!strcmp(child->name, "body") && !strcmp(xmlns, NS_XMPP_CLIENT)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 if(!jm->body) { |
30315
c492cef26b88
jabber: Only take the character data from a <body/> element (non-XHTML)
Paul Aurich <paul@darkrain42.org>
parents:
30201
diff
changeset
|
592 char *msg = xmlnode_get_data(child); |
15822 | 593 jm->body = purple_strdup_withhtml(msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
595 } |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
596 } else if(!strcmp(child->name, "html") && !strcmp(xmlns, NS_XHTML_IM)) { |
17236
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
597 if(!jm->xhtml && xmlnode_get_child(child, "body")) { |
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
598 char *c; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
599 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
600 const PurpleConnection *gc = js->gc; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
601 PurpleAccount *account = purple_connection_get_account(gc); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
602 PurpleConversation *conv = NULL; |
24179
2c6c9d72f54f
A couple of compile warning fixes, a couple of memory leak plugs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24063
diff
changeset
|
603 GList *smiley_refs = NULL; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
604 gchar *reformatted_xhtml; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
605 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
606 if (purple_account_get_bool(account, "custom_smileys", TRUE)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
607 /* find a list of smileys ("cid" and "alt" text pairs) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
608 occuring in the message */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
609 smiley_refs = jabber_message_get_refs_from_xmlnode(child); |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
610 purple_debug_info("jabber", "found %d smileys\n", |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
611 g_list_length(smiley_refs)); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
612 |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26899
diff
changeset
|
613 if (smiley_refs) { |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
614 if (jm->type == JABBER_MESSAGE_GROUPCHAT) { |
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
615 JabberID *jid = jabber_id_new(jm->from); |
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
616 JabberChat *chat = NULL; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
617 |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
618 if (jid) { |
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
619 chat = jabber_chat_find(js, jid->node, jid->domain); |
27530
459e17946686
Break the 'if' onto two lines and don't bother calling jabber_id_free()
Mark Doliner <mark@kingant.net>
parents:
27512
diff
changeset
|
620 if (chat) |
459e17946686
Break the 'if' onto two lines and don't bother calling jabber_id_free()
Mark Doliner <mark@kingant.net>
parents:
27512
diff
changeset
|
621 conv = chat->conv; |
459e17946686
Break the 'if' onto two lines and don't bother calling jabber_id_free()
Mark Doliner <mark@kingant.net>
parents:
27512
diff
changeset
|
622 jabber_id_free(jid); |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
623 } |
26690
0054bf136314
Only look for and add custom smileys to incoming messages that are going to
Paul Aurich <paul@darkrain42.org>
parents:
26684
diff
changeset
|
624 } else if (jm->type == JABBER_MESSAGE_NORMAL || |
0054bf136314
Only look for and add custom smileys to incoming messages that are going to
Paul Aurich <paul@darkrain42.org>
parents:
26684
diff
changeset
|
625 jm->type == JABBER_MESSAGE_CHAT) { |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
626 conv = |
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
627 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, |
27511
5d82a9298ed5
Remove a superfluous variable.
Paul Aurich <paul@darkrain42.org>
parents:
27510
diff
changeset
|
628 from, account); |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
629 if (!conv) { |
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
630 /* we need to create the conversation here */ |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26899
diff
changeset
|
631 conv = |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
632 purple_conversation_new(PURPLE_CONV_TYPE_IM, |
27511
5d82a9298ed5
Remove a superfluous variable.
Paul Aurich <paul@darkrain42.org>
parents:
27510
diff
changeset
|
633 account, from); |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
634 } |
24061
fba7c73c8f02
Fixed a memory error, which was due to me destroying some hashtables in the
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
635 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
636 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
637 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
638 /* process any newly provided smileys */ |
29633
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
639 jabber_message_add_remote_smileys(js, to, packet); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
640 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
641 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
642 /* reformat xhtml so that img tags with a "cid:" src gets |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
643 translated to the bare text of the emoticon (the "alt" attrib) */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
644 /* this is done also when custom smiley retrieval is turned off, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
645 this way the receiver always sees the shortcut instead */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
646 reformatted_xhtml = |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
647 jabber_message_xml_to_string_strip_img_smileys(child); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
648 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
649 jm->xhtml = reformatted_xhtml; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
650 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
651 /* add known custom emoticons to the conversation */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
652 /* note: if there were no smileys in the incoming message, or |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
653 if receiving custom smileys is turned off, smiley_refs will |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
654 be NULL */ |
24448
71c42ce1a1df
I got a crash happened at dereferencing chat when it's NULL, I think this
Ka-Hing Cheung <khc@hxbc.us>
parents:
24180
diff
changeset
|
655 for (; conv && smiley_refs ; smiley_refs = g_list_delete_link(smiley_refs, smiley_refs)) { |
24180
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
656 JabberSmileyRef *ref = (JabberSmileyRef *) smiley_refs->data; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
657 const gchar *cid = ref->cid; |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
658 gchar *alt = g_strdup(ref->alt); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
659 |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
660 purple_debug_info("jabber", |
24061
fba7c73c8f02
Fixed a memory error, which was due to me destroying some hashtables in the
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
661 "about to add custom smiley %s to the conv\n", alt); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
662 if (purple_conv_custom_smiley_add(conv, alt, "cid", cid, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
663 TRUE)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
664 const JabberData *data = |
29633
1bde873d1b94
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
665 jabber_data_find_remote_by_cid(js, from, cid); |
26617
cb6dd7ee9df3
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <ml@update.uu.se>
parents:
26465
diff
changeset
|
666 /* if data is already known, we write it immediatly */ |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
667 if (data) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
668 purple_debug_info("jabber", |
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
669 "data is already known\n"); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
670 purple_conv_custom_smiley_write(conv, alt, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
671 jabber_data_get_data(data), |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
672 jabber_data_get_size(data)); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
673 purple_conv_custom_smiley_close(conv, alt); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
674 } else { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
675 /* we need to request the smiley (data) */ |
24061
fba7c73c8f02
Fixed a memory error, which was due to me destroying some hashtables in the
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
676 purple_debug_info("jabber", |
fba7c73c8f02
Fixed a memory error, which was due to me destroying some hashtables in the
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
677 "data is unknown, need to request it\n"); |
29626
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
678 jabber_data_request(js, cid, from, alt, FALSE, |
fce17268c9ec
jabber: Refactor BoB request code to reside inside data.c
Marcus Lundblad <ml@update.uu.se>
parents:
29552
diff
changeset
|
679 jabber_message_request_data_cb, conv); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
680 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
681 } |
24180
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
682 g_free(ref->cid); |
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
683 g_free(ref->alt); |
14915e96311e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24179
diff
changeset
|
684 g_free(ref); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
685 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
686 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
687 /* Convert all newlines to whitespace. Technically, even regular, non-XML HTML is supposed to ignore newlines, but Pidgin has, as convention |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
688 * treated \n as a newline for compatibility with other protocols |
17236
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
689 */ |
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
690 for (c = jm->xhtml; *c != '\0'; c++) { |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
691 if (*c == '\n') |
17236
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
692 *c = ' '; |
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
693 } |
77b15be2179f
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
694 } |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
695 } else if(!strcmp(child->name, "active") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 jm->chat_state = JM_STATE_ACTIVE; |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
697 } else if(!strcmp(child->name, "composing") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 jm->chat_state = JM_STATE_COMPOSING; |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
699 } else if(!strcmp(child->name, "paused") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
700 jm->chat_state = JM_STATE_PAUSED; |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
701 } else if(!strcmp(child->name, "inactive") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
702 jm->chat_state = JM_STATE_INACTIVE; |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17258
diff
changeset
|
703 } else if(!strcmp(child->name, "gone") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
704 jm->chat_state = JM_STATE_GONE; |
17840
cac26c30047a
Implemented <required/> for x-data forms, simplified malloc/sprintf, message type headline is not a requirement for incoming PEP messages (it is just recommended to avoid offline message storage).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
705 } else if(!strcmp(child->name, "event") && !strcmp(xmlns,"http://jabber.org/protocol/pubsub#event")) { |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
706 xmlnode *items; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
707 jm->type = JABBER_MESSAGE_EVENT; |
17846
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
708 for(items = xmlnode_get_child(child,"items"); items; items = items->next) |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
709 jm->eventitems = g_list_append(jm->eventitems, items); |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
710 } else if(!strcmp(child->name, "attention") && !strcmp(xmlns, NS_ATTENTION)) { |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
711 jm->hasBuzz = TRUE; |
28663
5b449584fead
jabber: Delayed Delivery namespaces
Paul Aurich <paul@darkrain42.org>
parents:
28650
diff
changeset
|
712 } else if(!strcmp(child->name, "delay") && !strcmp(xmlns, NS_DELAYED_DELIVERY)) { |
17877
34411cc535de
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <pidgin@monitzer.com>
parents:
17858
diff
changeset
|
713 const char *timestamp = xmlnode_get_attrib(child, "stamp"); |
34411cc535de
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <pidgin@monitzer.com>
parents:
17858
diff
changeset
|
714 jm->delayed = TRUE; |
34411cc535de
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <pidgin@monitzer.com>
parents:
17858
diff
changeset
|
715 if(timestamp) |
34411cc535de
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <pidgin@monitzer.com>
parents:
17858
diff
changeset
|
716 jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
717 } else if(!strcmp(child->name, "x")) { |
28663
5b449584fead
jabber: Delayed Delivery namespaces
Paul Aurich <paul@darkrain42.org>
parents:
28650
diff
changeset
|
718 if(!strcmp(xmlns, NS_DELAYED_DELIVERY_LEGACY)) { |
27104
048bcf41deef
disapproval of revision 'a383ad6a4ae7e98bbcb32b4193531ccf960eb2bb'
Paul Aurich <paul@darkrain42.org>
parents:
27103
diff
changeset
|
719 const char *timestamp = xmlnode_get_attrib(child, "stamp"); |
048bcf41deef
disapproval of revision 'a383ad6a4ae7e98bbcb32b4193531ccf960eb2bb'
Paul Aurich <paul@darkrain42.org>
parents:
27103
diff
changeset
|
720 jm->delayed = TRUE; |
048bcf41deef
disapproval of revision 'a383ad6a4ae7e98bbcb32b4193531ccf960eb2bb'
Paul Aurich <paul@darkrain42.org>
parents:
27103
diff
changeset
|
721 if(timestamp) |
048bcf41deef
disapproval of revision 'a383ad6a4ae7e98bbcb32b4193531ccf960eb2bb'
Paul Aurich <paul@darkrain42.org>
parents:
27103
diff
changeset
|
722 jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL); |
048bcf41deef
disapproval of revision 'a383ad6a4ae7e98bbcb32b4193531ccf960eb2bb'
Paul Aurich <paul@darkrain42.org>
parents:
27103
diff
changeset
|
723 } else if(!strcmp(xmlns, "jabber:x:conference") && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
724 jm->type != JABBER_MESSAGE_GROUPCHAT_INVITE && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
725 jm->type != JABBER_MESSAGE_ERROR) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
726 const char *jid = xmlnode_get_attrib(child, "jid"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
727 if(jid) { |
28404
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
728 const char *reason = xmlnode_get_attrib(child, "reason"); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
729 const char *password = xmlnode_get_attrib(child, "password"); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
730 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
731 jm->type = JABBER_MESSAGE_GROUPCHAT_INVITE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
732 g_free(jm->to); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
733 jm->to = g_strdup(jid); |
28404
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
734 |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
735 if (reason) { |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
736 g_free(jm->body); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
737 jm->body = g_strdup(reason); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
738 } |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
739 |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
740 if (password) { |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
741 g_free(jm->password); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
742 jm->password = g_strdup(password); |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
743 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
744 } |
24721
bba38f03085d
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24538
diff
changeset
|
745 } else if(!strcmp(xmlns, "http://jabber.org/protocol/muc#user") && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
746 jm->type != JABBER_MESSAGE_ERROR) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
747 xmlnode *invite = xmlnode_get_child(child, "invite"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
748 if(invite) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
749 xmlnode *reason, *password; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
750 const char *jid = xmlnode_get_attrib(invite, "from"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
751 g_free(jm->to); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
752 jm->to = jm->from; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
753 jm->from = g_strdup(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
754 if((reason = xmlnode_get_child(invite, "reason"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
755 g_free(jm->body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
756 jm->body = xmlnode_get_data(reason); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
757 } |
28404
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
758 if((password = xmlnode_get_child(child, "password"))) { |
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
759 g_free(jm->password); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
760 jm->password = xmlnode_get_data(password); |
28404
41992511531f
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <paul@darkrain42.org>
parents:
28251
diff
changeset
|
761 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
762 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
763 jm->type = JABBER_MESSAGE_GROUPCHAT_INVITE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
764 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
765 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
766 jm->etc = g_list_append(jm->etc, child); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 } |
26694
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
768 } else if (g_str_equal(child->name, "query")) { |
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
769 const char *node = xmlnode_get_attrib(child, "node"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
770 if (purple_strequal(xmlns, NS_DISCO_ITEMS) |
26694
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
771 && purple_strequal(node, "http://jabber.org/protocol/commands")) { |
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
772 jabber_adhoc_got_list(js, jm->from, child); |
83e6e710cbf3
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents:
26690
diff
changeset
|
773 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
774 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
775 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
776 |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
777 if(jm->hasBuzz) |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
778 handle_buzz(jm); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
779 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
780 switch(jm->type) { |
27637
cbf7072fb372
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <paul@darkrain42.org>
parents:
27591
diff
changeset
|
781 case JABBER_MESSAGE_OTHER: |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28414
diff
changeset
|
782 purple_debug_info("jabber", |
27637
cbf7072fb372
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <paul@darkrain42.org>
parents:
27591
diff
changeset
|
783 "Received message of unknown type: %s\n", type); |
cbf7072fb372
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <paul@darkrain42.org>
parents:
27591
diff
changeset
|
784 /* Fall-through is intentional */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
785 case JABBER_MESSAGE_NORMAL: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
786 case JABBER_MESSAGE_CHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 handle_chat(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
788 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
789 case JABBER_MESSAGE_HEADLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
790 handle_headline(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
791 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
792 case JABBER_MESSAGE_GROUPCHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
793 handle_groupchat(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
794 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
795 case JABBER_MESSAGE_GROUPCHAT_INVITE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
796 handle_groupchat_invite(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
797 break; |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
798 case JABBER_MESSAGE_EVENT: |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
799 jabber_handle_event(jm); |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
800 break; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
801 case JABBER_MESSAGE_ERROR: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
802 handle_error(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
803 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
804 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
805 jabber_message_free(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
806 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
807 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
808 static const gchar * |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
809 jabber_message_get_mimetype_from_ext(const gchar *ext) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
810 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
811 if (strcmp(ext, "png") == 0) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
812 return "image/png"; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
813 } else if (strcmp(ext, "gif") == 0) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
814 return "image/gif"; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
815 } else if (strcmp(ext, "jpg") == 0) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
816 return "image/jpeg"; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
817 } else if (strcmp(ext, "tif") == 0) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
818 return "image/tif"; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
819 } else { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
820 return "image/x-icon"; /* or something... */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
821 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
822 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
823 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
824 static GList * |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
825 jabber_message_xhtml_find_smileys(const char *xhtml) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
826 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
827 GList *smileys = purple_smileys_get_all(); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
828 GList *found_smileys = NULL; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
829 |
23779
b2697ab66d23
Ooops ... compile\!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23778
diff
changeset
|
830 for (; smileys ; smileys = g_list_delete_link(smileys, smileys)) { |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
831 PurpleSmiley *smiley = (PurpleSmiley *) smileys->data; |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
832 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
833 const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
834 const gssize len = strlen(shortcut); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
835 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
836 gchar *escaped = g_markup_escape_text(shortcut, len); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
837 const char *pos = strstr(xhtml, escaped); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
838 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
839 if (pos) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
840 found_smileys = g_list_append(found_smileys, smiley); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
841 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
842 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
843 g_free(escaped); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
844 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
845 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
846 return found_smileys; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
847 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
848 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
849 static gchar * |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
850 jabber_message_get_smileyfied_xhtml(const gchar *xhtml, const GList *smileys) |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
851 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
852 /* create XML element for all smileys (img tags) */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
853 GString *result = g_string_new(NULL); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
854 int pos = 0; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
855 int length = strlen(xhtml); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
856 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
857 while (pos < length) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
858 const GList *iterator; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
859 gboolean found_smiley = FALSE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
860 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
861 for (iterator = smileys ; iterator ; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
862 iterator = g_list_next(iterator)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
863 const PurpleSmiley *smiley = (PurpleSmiley *) iterator->data; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
864 const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
865 const gssize len = strlen(shortcut); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
866 gchar *escaped = g_markup_escape_text(shortcut, len); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
867 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
868 if (g_str_has_prefix(&(xhtml[pos]), escaped)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
869 /* we found the current smiley at this position */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
870 const JabberData *data = |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
871 jabber_data_find_local_by_alt(shortcut); |
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
872 xmlnode *img = jabber_data_get_xhtml_im(data, shortcut); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
873 int len; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
874 gchar *img_text = xmlnode_to_str(img, &len); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
875 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
876 found_smiley = TRUE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
877 result = g_string_append(result, img_text); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
878 g_free(img_text); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
879 pos += strlen(escaped); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
880 g_free(escaped); |
24179
2c6c9d72f54f
A couple of compile warning fixes, a couple of memory leak plugs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24063
diff
changeset
|
881 xmlnode_free(img); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
882 break; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
883 } else { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
884 /* cleanup from the before the next round... */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
885 g_free(escaped); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
886 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
887 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
888 if (!found_smiley) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
889 /* there was no smiley here, just copy one byte */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
890 result = g_string_append_c(result, xhtml[pos]); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
891 pos++; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
892 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
893 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
894 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
895 return g_string_free(result, FALSE); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
896 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
897 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
898 static gboolean |
29043 | 899 jabber_conv_support_custom_smileys(JabberStream *js, |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
900 PurpleConversation *conv, |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
901 const gchar *who) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
902 { |
24058
305fac6af8f9
Updated to use latest spec. in XEP-0231
Marcus Lundblad <ml@update.uu.se>
parents:
23779
diff
changeset
|
903 JabberBuddy *jb; |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
904 JabberChat *chat; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
905 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
906 switch (purple_conversation_get_type(conv)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
907 case PURPLE_CONV_TYPE_IM: |
24527
1b61f62e5240
Removed som extranious debug output
Marcus Lundblad <ml@update.uu.se>
parents:
24451
diff
changeset
|
908 jb = jabber_buddy_find(js, who, FALSE); |
1b61f62e5240
Removed som extranious debug output
Marcus Lundblad <ml@update.uu.se>
parents:
24451
diff
changeset
|
909 if (jb) { |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
910 return jabber_buddy_has_capability(jb, NS_BOB); |
24527
1b61f62e5240
Removed som extranious debug output
Marcus Lundblad <ml@update.uu.se>
parents:
24451
diff
changeset
|
911 } else { |
24538
f48bfb88c7cb
Whoops, should return FALSE, not NULL, when jabber_buddy_find returns NULL
Marcus Lundblad <ml@update.uu.se>
parents:
24527
diff
changeset
|
912 return FALSE; |
24527
1b61f62e5240
Removed som extranious debug output
Marcus Lundblad <ml@update.uu.se>
parents:
24451
diff
changeset
|
913 } |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
914 break; |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
915 case PURPLE_CONV_TYPE_CHAT: |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
916 chat = jabber_chat_find_by_conv(conv); |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
917 if (chat) { |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
918 /* do not attempt to send custom smileys in a MUC with more than |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
919 10 people, to avoid getting too many BoB requests */ |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
920 return jabber_chat_get_num_participants(chat) <= 10 && |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26899
diff
changeset
|
921 jabber_chat_all_participants_have_capability(chat, |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
922 NS_BOB); |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
923 } else { |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
924 return FALSE; |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
925 } |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
926 break; |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
927 default: |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
928 return FALSE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
929 break; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
930 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
931 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
932 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
933 static char * |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
934 jabber_message_smileyfy_xhtml(JabberMessage *jm, const char *xhtml) |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
935 { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
936 PurpleAccount *account = purple_connection_get_account(jm->js->gc); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
937 PurpleConversation *conv = |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
938 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to, |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
939 account); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
940 |
29043 | 941 if (jabber_conv_support_custom_smileys(jm->js, conv, jm->to)) { |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
942 GList *found_smileys = jabber_message_xhtml_find_smileys(xhtml); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
943 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
944 if (found_smileys) { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
945 gchar *smileyfied_xhtml = NULL; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
946 const GList *iterator; |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
947 GList *valid_smileys = NULL; |
28953
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
948 gboolean has_too_large_smiley = FALSE; |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
949 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
950 for (iterator = found_smileys; iterator ; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
951 iterator = g_list_next(iterator)) { |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
952 PurpleSmiley *smiley = (PurpleSmiley *) iterator->data; |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
953 const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
954 const JabberData *data = |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
955 jabber_data_find_local_by_alt(shortcut); |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
956 PurpleStoredImage *image = purple_smiley_get_stored_image(smiley); |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
957 |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
958 if (purple_imgstore_get_size(image) <= JABBER_DATA_MAX_SIZE) { |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
959 /* the object has not been sent before */ |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
960 if (!data) { |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
961 const gchar *ext = purple_imgstore_get_extension(image); |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
962 JabberStream *js = jm->js; |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
963 |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
964 JabberData *new_data = |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
965 jabber_data_create_from_data(purple_imgstore_get_data(image), |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
966 purple_imgstore_get_size(image), |
29813
221cebbc35d8
Make it compile again after merge
Marcus Lundblad <ml@update.uu.se>
parents:
29812
diff
changeset
|
967 jabber_message_get_mimetype_from_ext(ext), FALSE, js); |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
968 purple_debug_info("jabber", |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
969 "cache local smiley alt = %s, cid = %s\n", |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
970 shortcut, jabber_data_get_cid(new_data)); |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
971 jabber_data_associate_local(new_data, shortcut); |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
972 } |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
973 valid_smileys = g_list_append(valid_smileys, smiley); |
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
974 } else { |
28953
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
975 has_too_large_smiley = TRUE; |
28955
57550ffb7870
jabber: Log a warning (with the shortcut) when refusing to send a smiley.
Paul Aurich <paul@darkrain42.org>
parents:
28953
diff
changeset
|
976 purple_debug_warning("jabber", "Refusing to send smiley %s " |
57550ffb7870
jabber: Log a warning (with the shortcut) when refusing to send a smiley.
Paul Aurich <paul@darkrain42.org>
parents:
28953
diff
changeset
|
977 "(too large, max is %d)\n", |
57550ffb7870
jabber: Log a warning (with the shortcut) when refusing to send a smiley.
Paul Aurich <paul@darkrain42.org>
parents:
28953
diff
changeset
|
978 purple_smiley_get_shortcut(smiley), |
57550ffb7870
jabber: Log a warning (with the shortcut) when refusing to send a smiley.
Paul Aurich <paul@darkrain42.org>
parents:
28953
diff
changeset
|
979 JABBER_DATA_MAX_SIZE); |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
980 } |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
981 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
982 |
28953
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
983 if (has_too_large_smiley) { |
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
984 purple_conversation_write(conv, NULL, |
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
985 _("A custom smiley in the message is too large to send."), |
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
986 PURPLE_MESSAGE_ERROR, time(NULL)); |
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
987 } |
bf0db10b0e3c
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <ml@update.uu.se>
parents:
28948
diff
changeset
|
988 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
989 smileyfied_xhtml = |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
990 jabber_message_get_smileyfied_xhtml(xhtml, valid_smileys); |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
991 g_list_free(found_smileys); |
28948
8271e42acdcb
jabber: Don't send custom smileys larger than the recommended maximum BoB size
Marcus Lundblad <ml@update.uu.se>
parents:
28909
diff
changeset
|
992 g_list_free(valid_smileys); |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
993 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
994 return smileyfied_xhtml; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
995 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
996 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
997 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
998 return NULL; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
999 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1000 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1001 void jabber_message_send(JabberMessage *jm) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1002 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1003 xmlnode *message, *child; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1004 const char *type = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1005 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1006 message = xmlnode_new("message"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1007 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1008 switch(jm->type) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1009 case JABBER_MESSAGE_NORMAL: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1010 type = "normal"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1011 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1012 case JABBER_MESSAGE_CHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1013 case JABBER_MESSAGE_GROUPCHAT_INVITE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1014 type = "chat"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1015 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1016 case JABBER_MESSAGE_HEADLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1017 type = "headline"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1018 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1019 case JABBER_MESSAGE_GROUPCHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1020 type = "groupchat"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1021 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1022 case JABBER_MESSAGE_ERROR: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1023 type = "error"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1024 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1025 case JABBER_MESSAGE_OTHER: |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17842
diff
changeset
|
1026 default: |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1027 type = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1028 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1029 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1030 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1031 if(type) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1032 xmlnode_set_attrib(message, "type", type); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25716
diff
changeset
|
1033 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1034 if (jm->id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1035 xmlnode_set_attrib(message, "id", jm->id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1036 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1037 xmlnode_set_attrib(message, "to", jm->to); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1038 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1039 if(jm->thread_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1040 child = xmlnode_new_child(message, "thread"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1041 xmlnode_insert_data(child, jm->thread_id, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1042 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1043 |
27105 | 1044 child = NULL; |
1045 switch(jm->chat_state) | |
1046 { | |
1047 case JM_STATE_ACTIVE: | |
1048 child = xmlnode_new_child(message, "active"); | |
1049 break; | |
1050 case JM_STATE_COMPOSING: | |
1051 child = xmlnode_new_child(message, "composing"); | |
1052 break; | |
1053 case JM_STATE_PAUSED: | |
1054 child = xmlnode_new_child(message, "paused"); | |
1055 break; | |
1056 case JM_STATE_INACTIVE: | |
1057 child = xmlnode_new_child(message, "inactive"); | |
1058 break; | |
1059 case JM_STATE_GONE: | |
1060 child = xmlnode_new_child(message, "gone"); | |
1061 break; | |
1062 case JM_STATE_NONE: | |
1063 /* yep, nothing */ | |
1064 break; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1065 } |
27105 | 1066 if(child) |
1067 xmlnode_set_namespace(child, "http://jabber.org/protocol/chatstates"); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1068 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1069 if(jm->subject) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1070 child = xmlnode_new_child(message, "subject"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1071 xmlnode_insert_data(child, jm->subject, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1072 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1073 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1074 if(jm->body) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1075 child = xmlnode_new_child(message, "body"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1076 xmlnode_insert_data(child, jm->body, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1077 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1078 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1079 if(jm->xhtml) { |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1080 if ((child = xmlnode_from_str(jm->xhtml, -1))) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1081 xmlnode_insert_child(message, child); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1082 } else { |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28414
diff
changeset
|
1083 purple_debug_error("jabber", |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1084 "XHTML translation/validation failed, returning: %s\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1085 jm->xhtml); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1086 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1087 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1088 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1089 jabber_send(jm->js, message); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1090 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1091 xmlnode_free(message); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1092 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1093 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1094 /* |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1095 * Compare the XHTML and plain strings passed in for "equality". Any HTML markup |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1096 * other than <br/> (matches a newline) in the XHTML will cause this to return |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1097 * FALSE. |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1098 */ |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1099 static gboolean |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1100 jabber_xhtml_plain_equal(const char *xhtml_escaped, |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1101 const char *plain) |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1102 { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1103 int i = 0; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1104 int j = 0; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1105 gboolean ret; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1106 char *xhtml = purple_unescape_html(xhtml_escaped); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1107 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1108 while (xhtml[i] && plain[j]) { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1109 if (xhtml[i] == plain[j]) { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1110 i += 1; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1111 j += 1; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1112 continue; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1113 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1114 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1115 if (plain[j] == '\n' && !strncmp(xhtml+i, "<br/>", 5)) { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1116 i += 5; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1117 j += 1; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1118 continue; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1119 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1120 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1121 g_free(xhtml); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1122 return FALSE; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1123 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1124 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1125 /* Are we at the end of both strings? */ |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1126 ret = (xhtml[i] == plain[j]) && (xhtml[i] == '\0'); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1127 g_free(xhtml); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1128 return ret; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1129 } |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1130 |
15822 | 1131 int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *msg, |
1132 PurpleMessageFlags flags) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1133 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1134 JabberMessage *jm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1135 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1136 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1137 char *xhtml; |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1138 char *tmp; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1139 char *resource; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1140 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1141 if(!who || !msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1142 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1143 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1144 resource = jabber_get_resource(who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1145 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1146 jb = jabber_buddy_find(gc->proto_data, who, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1147 jbr = jabber_buddy_find_resource(jb, resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1148 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1149 g_free(resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1150 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1151 jm = g_new0(JabberMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1152 jm->js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1153 jm->type = JABBER_MESSAGE_CHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1154 jm->chat_state = JM_STATE_ACTIVE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1155 jm->to = g_strdup(who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1156 jm->id = jabber_get_next_id(jm->js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1157 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1158 if(jbr) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1159 if(jbr->thread_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1160 jm->thread_id = jbr->thread_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1161 |
27101
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1162 if (jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED) |
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1163 jm->chat_state = JM_STATE_NONE; |
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1164 else { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1165 /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1166 jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1167 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1168 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1169 |
27019
bf9db4c67679
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <paul@darkrain42.org>
parents:
26932
diff
changeset
|
1170 tmp = purple_utf8_strip_unprintables(msg); |
bf9db4c67679
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <paul@darkrain42.org>
parents:
26932
diff
changeset
|
1171 purple_markup_html_to_xhtml(tmp, &xhtml, &jm->body); |
bf9db4c67679
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <paul@darkrain42.org>
parents:
26932
diff
changeset
|
1172 g_free(tmp); |
28909
5bacbd78e2b4
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <paul@darkrain42.org>
parents:
28663
diff
changeset
|
1173 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1174 tmp = jabber_message_smileyfy_xhtml(jm, xhtml); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1175 if (tmp) { |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1176 g_free(xhtml); |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1177 xhtml = tmp; |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1178 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1179 |
27508
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1180 /* |
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1181 * For backward compatibility with user expectations or for those not on |
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1182 * the user's roster, allow sending XHTML-IM markup. |
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1183 */ |
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1184 if (!jbr || !jbr->caps.info || |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1185 jabber_resource_has_capability(jbr, NS_XHTML_IM)) { |
27508
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1186 if (!jabber_xhtml_plain_equal(xhtml, jm->body)) |
28909
5bacbd78e2b4
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <paul@darkrain42.org>
parents:
28663
diff
changeset
|
1187 /* Wrap the message in <p/> for great interoperability justice. */ |
5bacbd78e2b4
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <paul@darkrain42.org>
parents:
28663
diff
changeset
|
1188 jm->xhtml = g_strdup_printf("<html xmlns='" NS_XHTML_IM "'><body xmlns='" NS_XHTML "'><p>%s</p></body></html>", xhtml); |
27508
95c56191d26c
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1189 } |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1190 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1191 g_free(xhtml); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1192 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1193 jabber_message_send(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1194 jabber_message_free(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1195 return 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1196 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1197 |
15822 | 1198 int jabber_message_send_chat(PurpleConnection *gc, int id, const char *msg, PurpleMessageFlags flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1199 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1200 JabberChat *chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1201 JabberMessage *jm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1202 JabberStream *js; |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1203 char *xhtml; |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1204 char *tmp; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1205 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1206 if(!msg || !gc) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1207 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1208 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1209 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1210 chat = jabber_chat_find_by_id(js, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1211 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1212 if(!chat) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1213 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1214 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1215 jm = g_new0(JabberMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1216 jm->js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1217 jm->type = JABBER_MESSAGE_GROUPCHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1218 jm->to = g_strdup_printf("%s@%s", chat->room, chat->server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 jm->id = jabber_get_next_id(jm->js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1220 |
27019
bf9db4c67679
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <paul@darkrain42.org>
parents:
26932
diff
changeset
|
1221 tmp = purple_utf8_strip_unprintables(msg); |
28251
e8717ca47d25
Oops, it helps to actually use the stripped message.
Paul Aurich <paul@darkrain42.org>
parents:
28156
diff
changeset
|
1222 purple_markup_html_to_xhtml(tmp, &xhtml, &jm->body); |
27019
bf9db4c67679
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <paul@darkrain42.org>
parents:
26932
diff
changeset
|
1223 g_free(tmp); |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1224 tmp = jabber_message_smileyfy_xhtml(jm, xhtml); |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1225 if (tmp) { |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1226 g_free(xhtml); |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1227 xhtml = tmp; |
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
1228 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1229 |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1230 if (chat->xhtml && !jabber_xhtml_plain_equal(xhtml, jm->body)) |
28909
5bacbd78e2b4
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <paul@darkrain42.org>
parents:
28663
diff
changeset
|
1231 /* Wrap the message in <p/> for greater interoperability justice. */ |
5bacbd78e2b4
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <paul@darkrain42.org>
parents:
28663
diff
changeset
|
1232 jm->xhtml = g_strdup_printf("<html xmlns='" NS_XHTML_IM "'><body xmlns='" NS_XHTML "'><p>%s</p></body></html>", xhtml); |
26838
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1233 |
aa29dac7924f
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1234 g_free(xhtml); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1235 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1236 jabber_message_send(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1237 jabber_message_free(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1238 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1239 return 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1240 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1241 |
15822 | 1242 unsigned int jabber_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 { |
30201
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1244 JabberStream *js; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1245 JabberMessage *jm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1246 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 JabberBuddyResource *jbr; |
30201
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1248 char *resource; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1249 |
30201
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1250 js = purple_connection_get_protocol_data(gc); |
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1251 jb = jabber_buddy_find(js, who, TRUE); |
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1252 if (!jb) |
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1253 return 0; |
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1254 |
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1255 resource = jabber_get_resource(who); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1256 jbr = jabber_buddy_find_resource(jb, resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1257 g_free(resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1258 |
29915
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1259 /* We know this entity doesn't support chat states */ |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1260 if (jbr && jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED) |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1261 return 0; |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1262 |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1263 /* *If* we don't have presence /and/ the buddy can't see our |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1264 * presence, don't send typing notifications. |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1265 */ |
097569720d68
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <paul@darkrain42.org>
parents:
29830
diff
changeset
|
1266 if (!jbr && !(jb->subscription & JABBER_SUB_FROM)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1267 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1268 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1269 /* TODO: figure out threading */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1270 jm = g_new0(JabberMessage, 1); |
30201
7227c51730b0
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <paul@darkrain42.org>
parents:
29919
diff
changeset
|
1271 jm->js = js; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1272 jm->type = JABBER_MESSAGE_CHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1273 jm->to = g_strdup(who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 jm->id = jabber_get_next_id(jm->js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1275 |
15822 | 1276 if(PURPLE_TYPING == state) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 jm->chat_state = JM_STATE_COMPOSING; |
15822 | 1278 else if(PURPLE_TYPED == state) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 jm->chat_state = JM_STATE_PAUSED; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1280 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 jm->chat_state = JM_STATE_ACTIVE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1282 |
27101
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1283 /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) |
ad04d94e6ddf
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <paul@darkrain42.org>
parents:
27019
diff
changeset
|
1284 jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1285 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1286 jabber_message_send(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1287 jabber_message_free(jm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1288 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1289 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1290 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1291 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23082
diff
changeset
|
1292 gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *namespace) { |
17890
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
1293 return js->allowBuzz; |
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
1294 } |
935005186312
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17889
diff
changeset
|
1295 |
25145
1225f3dcf5ab
Fix compilation errors and many warnings
Paul Aurich <paul@darkrain42.org>
parents:
25144
diff
changeset
|
1296 gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *namespace) |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
1297 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
1298 const PurpleConnection *gc = js->gc; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
1299 PurpleAccount *account = purple_connection_get_account(gc); |
23778
44feef3c885c
A couple of leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23777
diff
changeset
|
1300 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
1301 return purple_account_get_bool(account, "custom_smileys", TRUE); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23082
diff
changeset
|
1302 } |