Mercurial > pidgin
annotate libpurple/protocols/msn/msg.c @ 32797:aacfb71133cc
Fix a possible MSN remote crash
Incoming messages with certain characters or character encodings
can cause clients to crash. The fix is for the contents of all
incoming plaintext messages are converted to UTF-8 and validated
before used.
This was reported to us by Fabian Yamaguchi and this patch was written
by Elliott Sales de Andrade (maybe with small, insignificant changes by me)
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 07 May 2012 03:18:08 +0000 |
parents | cf702c6ab9e7 |
children | fa666e7f747e |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2 * @file msg.c Message functions |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
15822 | 4 * purple |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
15822 | 6 * Purple is the legal property of its developers, whose names are too numerous |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * source distribution. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * 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
|
11 * 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
|
12 * 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
|
13 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * 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
|
16 * 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
|
17 * 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
|
18 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * 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
|
21 * 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:
15822
diff
changeset
|
22 * 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
|
23 */ |
30742
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30737
diff
changeset
|
24 |
30758
230caecf5435
Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
masca@cpw.pidgin.im
parents:
30742
diff
changeset
|
25 #include "internal.h" |
30742
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30737
diff
changeset
|
26 #include "debug.h" |
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30737
diff
changeset
|
27 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "msn.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "msg.h" |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
30 #include "msnutils.h" |
30785
64e2fe53acc2
Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents:
30773
diff
changeset
|
31 #include "slpmsg.h" |
30821
721653babbbe
Destroy Part when the Message is destroyed.
masca@cpw.pidgin.im
parents:
30820
diff
changeset
|
32 #include "slpmsg_part.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 msn_message_new(MsnMsgType type) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 MsnMessage *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 msg = g_new0(MsnMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 msg->type = type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 |
27432
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
42 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
43 purple_debug_info("msn", "message new (%p)(%d)\n", msg, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
45 msg->header_table = g_hash_table_new_full(g_str_hash, g_str_equal, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 g_free, g_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 msn_message_ref(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
52 |
30952
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
53 /** |
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
54 * Destroys a message. |
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
55 * |
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
56 * @param msg The message to destroy. |
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
57 */ |
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
58 static void |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 msn_message_destroy(MsnMessage *msg) |
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 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 |
27432
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
63 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
64 purple_debug_info("msn", "message destroy (%p)\n", msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 |
20991
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
66 g_free(msg->remote_user); |
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
67 g_free(msg->body); |
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
68 g_free(msg->content_type); |
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
69 g_free(msg->charset); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
70 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
71 g_hash_table_destroy(msg->header_table); |
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
72 g_list_free(msg->header_list); |
31036
05e05d96ba75
Use the unref functions everywhere, instead of destroy. I also removed
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31034
diff
changeset
|
73 if (msg->part) |
05e05d96ba75
Use the unref functions everywhere, instead of destroy. I also removed
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31034
diff
changeset
|
74 msn_slpmsgpart_unref(msg->part); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 msn_message_ref(MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 msg->ref_count++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 |
27432
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
86 if (purple_debug_is_verbose()) |
31031
61db10475bed
As Mark did before, we probably don't need a return value from these
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30953
diff
changeset
|
87 purple_debug_info("msn", "message ref (%p)[%u]\n", msg, msg->ref_count); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 |
30953
5eb2ea662d8c
Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <mark@kingant.net>
parents:
30952
diff
changeset
|
92 void |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 msn_message_unref(MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 { |
30953
5eb2ea662d8c
Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <mark@kingant.net>
parents:
30952
diff
changeset
|
95 g_return_if_fail(msg != NULL); |
5eb2ea662d8c
Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <mark@kingant.net>
parents:
30952
diff
changeset
|
96 g_return_if_fail(msg->ref_count > 0); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 msg->ref_count--; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
99 |
27432
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27431
diff
changeset
|
100 if (purple_debug_is_verbose()) |
31031
61db10475bed
As Mark did before, we probably don't need a return value from these
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30953
diff
changeset
|
101 purple_debug_info("msn", "message unref (%p)[%u]\n", msg, msg->ref_count); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
102 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 if (msg->ref_count == 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
104 msn_message_destroy(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 msn_message_new_plain(const char *message) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 MsnMessage *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 char *message_cr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 msg = msn_message_new(MSN_MSG_TEXT); |
24207
fb722b8b4c74
attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@hxbc.us>
parents:
23095
diff
changeset
|
114 msg->retries = 1; |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
115 msn_message_set_header(msg, "User-Agent", PACKAGE_NAME "/" VERSION); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 msn_message_set_content_type(msg, "text/plain"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 msn_message_set_charset(msg, "UTF-8"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 msn_message_set_flag(msg, 'A'); |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
119 msn_message_set_header(msg, "X-MMS-IM-Format", |
25309
b0e069922896
Fixes #7373, the new live messenger client now sends Segoe UI as the default
Ka-Hing Cheung <khc@hxbc.us>
parents:
24728
diff
changeset
|
120 "FN=Segoe%20UI; EF=; CO=0; CS=1;PF=0"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 |
15822 | 122 message_cr = purple_str_add_cr(message); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 msn_message_set_bin_data(msg, message_cr, strlen(message_cr)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 g_free(message_cr); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 msn_message_new_msnslp(void) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 MsnMessage *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 msg = msn_message_new(MSN_MSG_SLP); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
136 msn_message_set_header(msg, "User-Agent", NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 msn_message_set_flag(msg, 'D'); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 msn_message_set_content_type(msg, "application/x-msnmsgrp2p"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 msn_message_new_nudge(void) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 MsnMessage *msg; |
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 msg = msn_message_new(MSN_MSG_NUDGE); |
23095
56d958e7b7d1
Fix a TODO uncovered by Mark the other day. Instead of using a hacky
Stu Tomlinson <stu@nosnilmot.com>
parents:
23011
diff
changeset
|
150 msn_message_set_content_type(msg, "text/x-msnmsgr-datacast"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 msn_message_set_flag(msg, 'N'); |
23095
56d958e7b7d1
Fix a TODO uncovered by Mark the other day. Instead of using a hacky
Stu Tomlinson <stu@nosnilmot.com>
parents:
23011
diff
changeset
|
152 msn_message_set_bin_data(msg, "ID: 1\r\n", 7); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 msn_message_parse_payload(MsnMessage *msg, |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
159 const char *payload, size_t payload_len, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
160 const char *line_dem,const char *body_dem) |
15373
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 char *tmp_base, *tmp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 const char *content_type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 char *end; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 char **elems, **cur, **tokens; |
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 g_return_if_fail(payload != NULL); |
24388
7e8175f9b009
It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents:
24207
diff
changeset
|
168 tmp_base = tmp = g_malloc(payload_len + 1); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 memcpy(tmp_base, payload, payload_len); |
24388
7e8175f9b009
It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents:
24207
diff
changeset
|
170 tmp_base[payload_len] = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
172 /* Find the end of the headers */ |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
173 end = strstr(tmp, body_dem); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 /* TODO? some clients use \r delimiters instead of \r\n, the official client |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 * doesn't send such messages, but does handle receiving them. We'll just |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 * avoid crashing for now */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 if (end == NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 g_free(tmp_base); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 g_return_if_reached(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 *end = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
183 /* Split the headers and parse each one */ |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
184 elems = g_strsplit(tmp, line_dem, 0); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 for (cur = elems; *cur != NULL; cur++) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 const char *key, *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 |
24728
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
189 /* If this line starts with whitespace, it's been folded from the |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
190 previous line and won't have ':'. */ |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
191 if ((**cur == ' ') || (**cur == '\t')) { |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
192 tokens = g_strsplit(g_strchug(*cur), "=\"", 2); |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
193 key = tokens[0]; |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
194 value = tokens[1]; |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
195 |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
196 /* The only one I care about is 'boundary' (which is folded from |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
197 the key 'Content-Type'), so only process that. */ |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
198 if (!strcmp(key, "boundary")) { |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
199 char *end = strchr(value, '\"'); |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
200 *end = '\0'; |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
201 msn_message_set_header(msg, key, value); |
24728
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
202 } |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
203 |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
204 g_strfreev(tokens); |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
205 continue; |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
206 } |
c09a647fd538
When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24388
diff
changeset
|
207 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 tokens = g_strsplit(*cur, ": ", 2); |
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 key = tokens[0]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 value = tokens[1]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
213 /*if not MIME content ,then return*/ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 if (!strcmp(key, "MIME-Version")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 g_strfreev(tokens); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
217 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
218 } |
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 if (!strcmp(key, "Content-Type")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 char *charset, *c; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
223 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 if ((c = strchr(value, ';')) != NULL) |
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 if ((charset = strchr(c, '=')) != NULL) |
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 charset++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 msn_message_set_charset(msg, charset); |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 *c = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 msn_message_set_content_type(msg, value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 { |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
239 msn_message_set_header(msg, key, value); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
241 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 g_strfreev(tokens); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 g_strfreev(elems); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 /* Proceed to the end of the "\r\n\r\n" */ |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
247 tmp = end + strlen(body_dem); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 /* Now we *should* be at the body. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
250 content_type = msn_message_get_content_type(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 |
30787 | 252 if (payload_len - (tmp - tmp_base) > 0) { |
253 msg->body_len = payload_len - (tmp - tmp_base); | |
254 g_free(msg->body); | |
255 msg->body = g_malloc(msg->body_len + 1); | |
256 memcpy(msg->body, tmp, msg->body_len); | |
257 msg->body[msg->body_len] = '\0'; | |
258 } | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 |
32797
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
260 if (msg->body && content_type && purple_str_has_prefix(content_type, "text/")) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
261 char *body = NULL; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
262 |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
263 if (msg->charset == NULL || g_str_equal(msg->charset, "UTF-8")) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
264 /* Charset is UTF-8 */ |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
265 if (!g_utf8_validate(msg->body, msg->body_len, NULL)) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
266 purple_debug_warning("msn", "Message contains invalid " |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
267 "UTF-8. Attempting to salvage.\n"); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
268 body = purple_utf8_salvage(msg->body); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
269 payload_len = strlen(body); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
270 } |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
271 } else { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
272 /* Charset is something other than UTF-8 */ |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
273 GError *err = NULL; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
274 body = g_convert(msg->body, msg->body_len, "UTF-8", |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
275 msg->charset, NULL, &payload_len, &err); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
276 if (!body || err) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
277 purple_debug_warning("msn", "Unable to convert message from " |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
278 "%s to UTF-8: %s\n", msg->charset, |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
279 err ? err->message : "Unknown error"); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
280 if (err) |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
281 g_error_free(err); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
282 |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
283 /* Fallback to ISO-8859-1 */ |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
284 g_free(body); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
285 body = g_convert(msg->body, msg->body_len, "UTF-8", |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
286 "ISO-8859-1", NULL, &payload_len, NULL); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
287 if (!body) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
288 g_free(msg->body); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
289 msg->body = NULL; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
290 msg->body_len = 0; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
291 } |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
292 } |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
293 } |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
294 |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
295 if (body) { |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
296 g_free(msg->body); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
297 msg->body = body; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
298 msg->body_len = payload_len; |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
299 msn_message_set_charset(msg, "UTF-8"); |
aacfb71133cc
Fix a possible MSN remote crash
Mark Doliner <mark@kingant.net>
parents:
31584
diff
changeset
|
300 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 g_free(tmp_base); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 msn_message_new_from_cmd(MsnSession *session, MsnCommand *cmd) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 MsnMessage *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 g_return_val_if_fail(cmd != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 msg = msn_message_new(MSN_MSG_UNKNOWN); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 msg->remote_user = g_strdup(cmd->params[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 /* msg->size = atoi(cmd->params[2]); */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 msg->cmd = cmd; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
323 msn_message_gen_payload(MsnMessage *msg, size_t *ret_size) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 char *n, *base, *end; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 int len; |
19732
97559afd70e4
Silence the warning that body_len might be used uninitialized in msn_message_gen_payload().
Evan Schoenberg <evan.s@dreskin.net>
parents:
19681
diff
changeset
|
328 size_t body_len = 0; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
329 const void *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 len = MSN_BUF_LEN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 base = n = end = g_malloc(len + 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 end += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 /* Standard header. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 if (msg->charset == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 g_snprintf(n, len, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 "Content-Type: %s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 msg->content_type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 g_snprintf(n, len, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
350 "Content-Type: %s; charset=%s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
351 msg->content_type, msg->charset); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 n += strlen(n); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
356 for (l = msg->header_list; l != NULL; l = l->next) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 const char *key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 const char *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 key = l->data; |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
362 value = msn_message_get_header_value(msg, key); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 g_snprintf(n, end - n, "%s: %s\r\n", key, value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 n += strlen(n); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
367 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 n += g_strlcpy(n, "\r\n", end - n); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 body = msn_message_get_bin_data(msg, &body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
372 if (body != NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 { |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
374 memcpy(n, body, body_len); |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
375 n += body_len; |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
376 *n = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 if (ret_size != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 *ret_size = n - base; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
383 if (*ret_size > 1664) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 *ret_size = 1664; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
387 return base; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 msn_message_set_flag(MsnMessage *msg, char flag) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 g_return_if_fail(flag != 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 msg->flag = flag; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
399 char |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 msn_message_get_flag(const MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
401 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
402 g_return_val_if_fail(msg != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
403 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 return msg->flag; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 msn_message_set_bin_data(MsnMessage *msg, const void *data, size_t len) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
410 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
412 /* There is no need to waste memory on data we cannot send anyway */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 if (len > 1664) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 len = 1664; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
416 if (msg->body != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 g_free(msg->body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
419 if (data != NULL && len > 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 { |
24388
7e8175f9b009
It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents:
24207
diff
changeset
|
421 msg->body = g_malloc(len + 1); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
422 memcpy(msg->body, data, len); |
24388
7e8175f9b009
It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents:
24207
diff
changeset
|
423 msg->body[len] = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
424 msg->body_len = len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
425 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
426 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
427 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 msg->body = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
429 msg->body_len = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
430 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
431 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
433 const void * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 msn_message_get_bin_data(const MsnMessage *msg, size_t *len) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
438 if (len) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
439 *len = msg->body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
440 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
441 return msg->body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
442 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
443 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
445 msn_message_set_content_type(MsnMessage *msg, const char *type) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
446 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
448 |
20991
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
449 g_free(msg->content_type); |
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
450 msg->content_type = g_strdup(type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
451 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
452 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 const char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 msn_message_get_content_type(const MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
456 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 return msg->content_type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
459 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
461 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
462 msn_message_set_charset(MsnMessage *msg, const char *charset) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
463 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
464 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
465 |
20991
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
466 g_free(msg->charset); |
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
467 msg->charset = g_strdup(charset); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
468 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
469 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
470 const char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
471 msn_message_get_charset(const MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
472 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
473 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
474 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
475 return msg->charset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
476 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
477 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
478 void |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
479 msn_message_set_header(MsnMessage *msg, const char *name, const char *value) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
480 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
481 const char *temp; |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
482 char *new_name; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
483 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
484 g_return_if_fail(msg != NULL); |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
485 g_return_if_fail(name != NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
486 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
487 temp = msn_message_get_header_value(msg, name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
488 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
489 if (value == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
490 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 if (temp != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
492 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
493 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
495 for (l = msg->header_list; l != NULL; l = l->next) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
496 { |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
497 if (!g_ascii_strcasecmp(l->data, name)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 { |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
499 msg->header_list = g_list_remove(msg->header_list, l->data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
500 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
502 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
505 g_hash_table_remove(msg->header_table, name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
509 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
510 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
511 new_name = g_strdup(name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
512 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
513 g_hash_table_insert(msg->header_table, new_name, g_strdup(value)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
515 if (temp == NULL) |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
516 msg->header_list = g_list_append(msg->header_list, new_name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
517 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
518 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 const char * |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
520 msn_message_get_header_value(const MsnMessage *msg, const char *name) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 g_return_val_if_fail(msg != NULL, NULL); |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
523 g_return_val_if_fail(name != NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
524 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
525 return g_hash_table_lookup(msg->header_table, name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
527 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 GHashTable * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 msn_message_get_hashtable_from_body(const MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 GHashTable *table; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 char **elems, **cur, **tokens, *body_str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
535 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
540 body = msn_message_get_bin_data(msg, &body_len); |
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 g_return_val_if_fail(body != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 body_str = g_strndup(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 elems = g_strsplit(body_str, "\r\n", 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 g_free(body_str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 for (cur = elems; *cur != NULL; cur++) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 if (**cur == '\0') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 tokens = g_strsplit(*cur, ": ", 2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 |
20935
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
555 if (tokens[0] != NULL && tokens[1] != NULL) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 g_hash_table_insert(table, tokens[0], tokens[1]); |
20935
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
557 g_free(tokens); |
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
558 } else |
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
559 g_strfreev(tokens); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
560 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 g_strfreev(elems); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 return table; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 msn_message_to_string(MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
569 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
574 g_return_val_if_fail(msg->type == MSN_MSG_TEXT, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
575 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
576 body = msn_message_get_bin_data(msg, &body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
577 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
578 return g_strndup(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
580 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
581 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
582 msn_message_show_readable(MsnMessage *msg, const char *info, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 gboolean text_body) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
585 GString *str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
592 str = g_string_new(NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
593 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 /* Standard header. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
595 if (msg->charset == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
596 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
597 g_string_append_printf(str, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
598 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
599 "Content-Type: %s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
600 msg->content_type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
601 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
602 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
603 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
604 g_string_append_printf(str, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
605 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
606 "Content-Type: %s; charset=%s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
607 msg->content_type, msg->charset); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
608 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
609 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
610 for (l = msg->header_list; l; l = l->next) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
612 char *key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 const char *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
615 key = l->data; |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
616 value = msn_message_get_header_value(msg, key); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
617 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
618 g_string_append_printf(str, "%s: %s\r\n", key, value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
619 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
621 g_string_append(str, "\r\n"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
622 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
623 body = msn_message_get_bin_data(msg, &body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
624 |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
625 if (body != NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
626 { |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
627 if (msg->type == MSN_MSG_TEXT) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
628 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 g_string_append_len(str, body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
630 g_string_append(str, "\r\n"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
631 } |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
632 else |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
633 { |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
634 size_t i; |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
635 for (i = 0; i < body_len; i++, body++) |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
636 { |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
637 g_string_append_printf(str, "%02x ", (unsigned char)*body); |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
638 if (i % 16 == 0 && i != 0) |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
639 g_string_append_c(str, '\n'); |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
640 } |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
641 g_string_append_c(str, '\n'); |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
642 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
643 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
644 |
15822 | 645 purple_debug_info("msn", "Message %s:\n{%s}\n", info, str->str); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
646 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 g_string_free(str, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
648 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
649 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
650 /************************************************************************** |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
651 * Message Handlers |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
652 **************************************************************************/ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
653 void |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
654 msn_plain_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
655 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
656 PurpleConnection *gc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
657 const char *body; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
658 char *body_enc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
659 char *body_final; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
660 size_t body_len; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
661 const char *passport; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
662 const char *value; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
663 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
664 gc = cmdproc->session->account->gc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
665 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
666 body = msn_message_get_bin_data(msg, &body_len); |
30699
a786d893df2b
I don't believe there's any reason to duplicate this string.
Mark Doliner <mark@kingant.net>
parents:
30694
diff
changeset
|
667 body_enc = g_markup_escape_text(body, body_len); |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
668 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
669 passport = msg->remote_user; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
670 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
671 if (!strcmp(passport, "messenger@microsoft.com") && |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
672 strstr(body, "immediate security update")) |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
673 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
674 return; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
675 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
676 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
677 #if 0 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
678 if ((value = msn_message_get_header_value(msg, "User-Agent")) != NULL) |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
679 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
680 purple_debug_misc("msn", "User-Agent = '%s'\n", value); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
681 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
682 #endif |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
683 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
684 if ((value = msn_message_get_header_value(msg, "X-MMS-IM-Format")) != NULL) |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
685 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
686 char *pre, *post; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
687 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
688 msn_parse_format(value, &pre, &post); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
689 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
690 body_final = g_strdup_printf("%s%s%s", pre ? pre : "", |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
691 body_enc ? body_enc : "", post ? post : ""); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
692 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
693 g_free(pre); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
694 g_free(post); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
695 g_free(body_enc); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
696 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
697 else |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
698 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
699 body_final = body_enc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
700 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
701 |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
702 if (cmdproc->servconn->type == MSN_SERVCONN_SB) { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
703 MsnSwitchBoard *swboard = cmdproc->data; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
704 |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
705 swboard->flag |= MSN_SB_FLAG_IM; |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
706 |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
707 if (swboard->current_users > 1 || |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
708 ((swboard->conv != NULL) && |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
709 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT)) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
710 { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
711 /* If current_users is always ok as it should then there is no need to |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
712 * check if this is a chat. */ |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
713 if (swboard->current_users <= 1) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
714 purple_debug_misc("msn", "plain_msg: current_users(%d)\n", |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
715 swboard->current_users); |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
716 |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
717 serv_got_chat_in(gc, swboard->chat_id, passport, 0, body_final, |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
718 time(NULL)); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
719 if (swboard->conv == NULL) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
720 { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
721 swboard->conv = purple_find_chat(gc, swboard->chat_id); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
722 swboard->flag |= MSN_SB_FLAG_IM; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
723 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
724 } |
30734
7fa07adbe482
Don't treat messages got from ourself from a switchboard like a new message. This fixes the multiple conversation open with ourself.
masca@cpw.pidgin.im
parents:
30730
diff
changeset
|
725 else if (!g_str_equal(passport, purple_account_get_username(gc->account))) |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
726 { |
30734
7fa07adbe482
Don't treat messages got from ourself from a switchboard like a new message. This fixes the multiple conversation open with ourself.
masca@cpw.pidgin.im
parents:
30730
diff
changeset
|
727 /* Don't im ourselves ... */ |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
728 serv_got_im(gc, passport, body_final, 0, time(NULL)); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
729 if (swboard->conv == NULL) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
730 { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
731 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
732 passport, purple_connection_get_account(gc)); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
733 swboard->flag |= MSN_SB_FLAG_IM; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
734 } |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
735 } |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
736 |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
737 } else { |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
738 serv_got_im(gc, passport, body_final, 0, time(NULL)); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
739 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
740 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
741 g_free(body_final); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
742 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
743 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
744 void |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
745 msn_control_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
746 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
747 PurpleConnection *gc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
748 char *passport; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
749 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
750 gc = cmdproc->session->account->gc; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
751 passport = msg->remote_user; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
752 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
753 if (msn_message_get_header_value(msg, "TypingUser") == NULL) |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
754 return; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
755 |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
756 if (cmdproc->servconn->type == MSN_SERVCONN_SB) { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
757 MsnSwitchBoard *swboard = cmdproc->data; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
758 |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
759 if (swboard->current_users == 1) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
760 { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
761 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
762 PURPLE_TYPING); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
763 } |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
764 |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
765 } else { |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
766 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
767 PURPLE_TYPING); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
768 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
769 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
770 |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
771 static void |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
772 datacast_inform_user(MsnSwitchBoard *swboard, const char *who, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
773 const char *msg, const char *filename) |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
774 { |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
775 char *username, *str; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
776 PurpleAccount *account; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
777 PurpleBuddy *b; |
29898
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
778 PurpleConnection *pc; |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
779 gboolean chat; |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
780 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
781 account = swboard->session->account; |
29898
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
782 pc = purple_account_get_connection(account); |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
783 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
784 if ((b = purple_find_buddy(account, who)) != NULL) |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
785 username = g_markup_escape_text(purple_buddy_get_alias(b), -1); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
786 else |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
787 username = g_markup_escape_text(who, -1); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
788 str = g_strdup_printf(msg, username, filename); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
789 g_free(username); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
790 |
29898
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
791 swboard->flag |= MSN_SB_FLAG_IM; |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
792 if (swboard->current_users > 1) |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
793 chat = TRUE; |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
794 else |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
795 chat = FALSE; |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
796 |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
797 if (swboard->conv == NULL) { |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
798 if (chat) |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
799 swboard->conv = purple_find_chat(account->gc, swboard->chat_id); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
800 else { |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
801 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
802 who, account); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
803 if (swboard->conv == NULL) |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
804 swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
805 } |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
806 } |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
807 |
29898
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
808 if (chat) |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
809 serv_got_chat_in(pc, |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
810 purple_conv_chat_get_id(PURPLE_CONV_CHAT(swboard->conv)), |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
811 who, PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM, str, |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
812 time(NULL)); |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
813 else |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
814 serv_got_im(pc, who, str, PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM, |
71fe96932a8e
Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29780
diff
changeset
|
815 time(NULL)); |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
816 g_free(str); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
817 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
818 } |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
819 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
820 /* TODO: Make these not be such duplicates of each other */ |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
821 static void |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
822 got_wink_cb(MsnSlpCall *slpcall, const guchar *data, gsize size) |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
823 { |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
824 FILE *f = NULL; |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
825 char *path = NULL; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
826 const char *who = slpcall->slplink->remote_user; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
827 purple_debug_info("msn", "Received wink from %s\n", who); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
828 |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
829 if ((f = purple_mkstemp(&path, TRUE)) && |
29780
0f1df8098d00
Oops, make sure that check actually succeeds when it's supposed to.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29779
diff
changeset
|
830 (fwrite(data, 1, size, f) == size)) { |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
831 datacast_inform_user(slpcall->slplink->swboard, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
832 who, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
833 _("%s sent a wink. <a href='msn-wink://%s'>Click here to play it</a>"), |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
834 path); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
835 } else { |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
836 purple_debug_error("msn", "Couldn\'t create temp file to store wink\n"); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
837 datacast_inform_user(slpcall->slplink->swboard, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
838 who, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
839 _("%s sent a wink, but it could not be saved"), |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
840 NULL); |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
841 } |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
842 if (f) |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
843 fclose(f); |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
844 g_free(path); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
845 } |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
846 |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
847 static void |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
848 got_voiceclip_cb(MsnSlpCall *slpcall, const guchar *data, gsize size) |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
849 { |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
850 FILE *f = NULL; |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
851 char *path = NULL; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
852 const char *who = slpcall->slplink->remote_user; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
853 purple_debug_info("msn", "Received voice clip from %s\n", who); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
854 |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
855 if ((f = purple_mkstemp(&path, TRUE)) && |
29780
0f1df8098d00
Oops, make sure that check actually succeeds when it's supposed to.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29779
diff
changeset
|
856 (fwrite(data, 1, size, f) == size)) { |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
857 datacast_inform_user(slpcall->slplink->swboard, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
858 who, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
859 _("%s sent a voice clip. <a href='audio://%s'>Click here to play it</a>"), |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
860 path); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
861 } else { |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
862 purple_debug_error("msn", "Couldn\'t create temp file to store sound\n"); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
863 datacast_inform_user(slpcall->slplink->swboard, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
864 who, |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
865 _("%s sent a voice clip, but it could not be saved"), |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
866 NULL); |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
867 } |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
868 if (f) |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
869 fclose(f); |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
870 g_free(path); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
871 } |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
872 |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
873 void |
30812
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
874 msn_p2p_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
875 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
876 MsnSession *session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
877 MsnSlpLink *slplink; |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
878 MsnP2PVersion p2p; |
30812
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
879 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
880 session = cmdproc->servconn->session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
881 slplink = msn_session_get_slplink(session, msg->remote_user); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
882 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
883 if (slplink->swboard == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
884 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
885 /* |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
886 * We will need swboard in order to change its flags. If its |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
887 * NULL, something has probably gone wrong earlier on. I |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
888 * didn't want to do this, but MSN 7 is somehow causing us |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
889 * to crash here, I couldn't reproduce it to debug more, |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
890 * and people are reporting bugs. Hopefully this doesn't |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
891 * cause more crashes. Stu. |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
892 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
893 if (cmdproc->data == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
894 g_warning("msn_p2p_msg cmdproc->data was NULL\n"); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
895 else { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
896 slplink->swboard = (MsnSwitchBoard *)cmdproc->data; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
897 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
898 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
899 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
900 |
31584
cf702c6ab9e7
Getting the P2P version is probably the slplink's job, since it has
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31581
diff
changeset
|
901 p2p = msn_slplink_get_p2p_version(slplink); |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
902 msg->part = msn_slpmsgpart_new_from_data(p2p, msg->body, msg->body_len); |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
903 |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
904 if (msg->part) |
30858
2d00d29a45fd
Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
masca@cpw.pidgin.im
parents:
30850
diff
changeset
|
905 msn_slplink_process_msg(slplink, msg->part); |
31581
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
906 else |
a406398412ee
I've always wondered why the SB layer was parsing the P2P stuff, when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31577
diff
changeset
|
907 purple_debug_warning("msn", "P2P message failed to parse.\n"); |
30812
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
908 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
909 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
910 static void |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
911 got_emoticon(MsnSlpCall *slpcall, |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
912 const guchar *data, gsize size) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
913 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
914 PurpleConversation *conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
915 MsnSwitchBoard *swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
916 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
917 swboard = slpcall->slplink->swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
918 conv = swboard->conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
919 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
920 if (conv) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
921 /* FIXME: it would be better if we wrote the data as we received it |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
922 instead of all at once, calling write multiple times and |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
923 close once at the very end |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
924 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
925 purple_conv_custom_smiley_write(conv, slpcall->data_info, data, size); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
926 purple_conv_custom_smiley_close(conv, slpcall->data_info ); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
927 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
928 if (purple_debug_is_verbose()) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
929 purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
930 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
931 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
932 void msn_emoticon_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
933 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
934 MsnSession *session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
935 MsnSlpLink *slplink; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
936 MsnSwitchBoard *swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
937 MsnObject *obj; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
938 char **tokens; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
939 char *smile, *body_str; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
940 const char *body, *who, *sha1; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
941 guint tok; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
942 size_t body_len; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
943 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
944 PurpleConversation *conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
945 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
946 session = cmdproc->servconn->session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
947 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
948 if (!purple_account_get_bool(session->account, "custom_smileys", TRUE)) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
949 return; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
950 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
951 swboard = cmdproc->data; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
952 conv = swboard->conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
953 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
954 body = msn_message_get_bin_data(msg, &body_len); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
955 if (!body || !body_len) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
956 return; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
957 body_str = g_strndup(body, body_len); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
958 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
959 /* MSN Messenger 7 may send more than one MSNObject in a single message... |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
960 * Maybe 10 tokens is a reasonable max value. */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
961 tokens = g_strsplit(body_str, "\t", 10); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
962 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
963 g_free(body_str); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
964 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
965 for (tok = 0; tok < 9; tok += 2) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
966 if (tokens[tok] == NULL || tokens[tok + 1] == NULL) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
967 break; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
968 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
969 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
970 smile = tokens[tok]; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
971 obj = msn_object_new_from_string(purple_url_decode(tokens[tok + 1])); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
972 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
973 if (obj == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
974 break; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
975 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
976 who = msn_object_get_creator(obj); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
977 sha1 = msn_object_get_sha1(obj); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
978 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
979 slplink = msn_session_get_slplink(session, who); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
980 if (slplink->swboard != swboard) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
981 if (slplink->swboard != NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
982 /* |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
983 * Apparently we're using a different switchboard now or |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
984 * something? I don't know if this is normal, but it |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
985 * definitely happens. So make sure the old switchboard |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
986 * doesn't still have a reference to us. |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
987 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
988 slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
989 slplink->swboard = swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
990 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
991 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
992 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
993 /* If the conversation doesn't exist then this is a custom smiley |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
994 * used in the first message in a MSN conversation: we need to create |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
995 * the conversation now, otherwise the custom smiley won't be shown. |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
996 * This happens because every GtkIMHtml has its own smiley tree: if |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
997 * the conversation doesn't exist then we cannot associate the new |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
998 * smiley with its GtkIMHtml widget. */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
999 if (!conv) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1000 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, who); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1001 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1002 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1003 if (purple_conv_custom_smiley_add(conv, smile, "sha1", sha1, TRUE)) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1004 msn_slplink_request_object(slplink, smile, got_emoticon, NULL, obj); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1005 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1006 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1007 msn_object_destroy(obj); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1008 obj = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1009 who = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1010 sha1 = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1011 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1012 g_strfreev(tokens); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1013 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1014 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
1015 void |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1016 msn_datacast_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1017 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1018 GHashTable *body; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1019 const char *id; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1020 body = msn_message_get_hashtable_from_body(msg); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1021 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1022 id = g_hash_table_lookup(body, "ID"); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1023 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1024 if (!strcmp(id, "1")) { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1025 /* Nudge */ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1026 PurpleAccount *account; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1027 const char *user; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1028 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1029 account = cmdproc->session->account; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1030 user = msg->remote_user; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1031 |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1032 if (cmdproc->servconn->type == MSN_SERVCONN_SB) { |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1033 MsnSwitchBoard *swboard = cmdproc->data; |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1034 if (swboard->current_users > 1 || |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1035 ((swboard->conv != NULL) && |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1036 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT)) |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1037 purple_prpl_got_attention_in_chat(account->gc, swboard->chat_id, user, MSN_NUDGE); |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1038 |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1039 else |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1040 purple_prpl_got_attention(account->gc, user, MSN_NUDGE); |
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1041 } else { |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1042 purple_prpl_got_attention(account->gc, user, MSN_NUDGE); |
25399
8ee34225cfd9
Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25398
diff
changeset
|
1043 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1044 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1045 } else if (!strcmp(id, "2")) { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1046 /* Wink */ |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1047 MsnSession *session; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1048 MsnSlpLink *slplink; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1049 MsnObject *obj; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1050 const char *who; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1051 const char *data; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1052 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1053 session = cmdproc->session; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1054 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1055 data = g_hash_table_lookup(body, "Data"); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1056 obj = msn_object_new_from_string(data); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1057 who = msn_object_get_creator(obj); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1058 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1059 slplink = msn_session_get_slplink(session, who); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1060 msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1061 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1062 msn_object_destroy(obj); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1063 |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1064 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1065 } else if (!strcmp(id, "3")) { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1066 /* Voiceclip */ |
27431
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1067 MsnSession *session; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1068 MsnSlpLink *slplink; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1069 MsnObject *obj; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1070 const char *who; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1071 const char *data; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1072 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1073 session = cmdproc->session; |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1074 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1075 data = g_hash_table_lookup(body, "Data"); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1076 obj = msn_object_new_from_string(data); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1077 who = msn_object_get_creator(obj); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1078 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1079 slplink = msn_session_get_slplink(session, who); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1080 msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj); |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1081 |
9c413bda20be
Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27292
diff
changeset
|
1082 msn_object_destroy(obj); |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1083 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1084 } else if (!strcmp(id, "4")) { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1085 /* Action */ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1086 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1087 } else { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1088 purple_debug_warning("msn", "Got unknown datacast with ID %s.\n", id); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1089 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1090 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1091 g_hash_table_destroy(body); |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1092 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1093 |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1094 void |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1095 msn_invite_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1096 { |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1097 GHashTable *body; |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1098 const gchar *command; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1099 const gchar *cookie; |
27868
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1100 gboolean accepted = FALSE; |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1101 |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1102 g_return_if_fail(cmdproc != NULL); |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1103 g_return_if_fail(msg != NULL); |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1104 |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1105 body = msn_message_get_hashtable_from_body(msg); |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1106 |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1107 if (body == NULL) { |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1108 purple_debug_warning("msn", |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1109 "Unable to parse invite msg body.\n"); |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1110 return; |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1111 } |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1112 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1113 /* |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1114 * GUID is NOT always present but Invitation-Command and Invitation-Cookie |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1115 * are mandatory. |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1116 */ |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1117 command = g_hash_table_lookup(body, "Invitation-Command"); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1118 cookie = g_hash_table_lookup(body, "Invitation-Cookie"); |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1119 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1120 if (command == NULL || cookie == NULL) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1121 purple_debug_warning("msn", |
30026
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1122 "Invalid invitation message: either Invitation-Command " |
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1123 "or Invitation-Cookie is missing or invalid.\n" |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1124 ); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1125 return; |
27868
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1126 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1127 } else if (!strcmp(command, "INVITE")) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1128 const gchar *guid = g_hash_table_lookup(body, "Application-GUID"); |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1129 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1130 if (guid == NULL) { |
30069
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1131 purple_debug_warning("msn", |
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1132 "Invite msg missing Application-GUID.\n"); |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1133 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1134 accepted = TRUE; |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1135 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1136 } else if (!strcmp(guid, MSN_FT_GUID)) { |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1137 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1138 } else if (!strcmp(guid, "{02D3C01F-BF30-4825-A83A-DE7AF41648AA}")) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1139 purple_debug_info("msn", "Computer call\n"); |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1140 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1141 if (cmdproc->session) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1142 PurpleConversation *conv = NULL; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1143 gchar *from = msg->remote_user; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1144 gchar *buf = NULL; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1145 |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1146 if (from) |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1147 conv = purple_find_conversation_with_account( |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1148 PURPLE_CONV_TYPE_IM, from, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1149 cmdproc->session->account); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1150 if (conv) |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1151 buf = g_strdup_printf( |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1152 _("%s sent you a voice chat " |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1153 "invite, which is not yet " |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1154 "supported."), from); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1155 if (buf) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1156 purple_conversation_write(conv, NULL, buf, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1157 PURPLE_MESSAGE_SYSTEM | |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1158 PURPLE_MESSAGE_NOTIFY, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1159 time(NULL)); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1160 g_free(buf); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1161 } |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1162 } |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1163 } else { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1164 const gchar *application = g_hash_table_lookup(body, "Application-Name"); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1165 purple_debug_warning("msn", "Unhandled invite msg with GUID %s: %s.\n", |
30026
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1166 guid, application ? application : "(null)"); |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1167 } |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1168 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1169 if (!accepted) { |
27868
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1170 MsnSwitchBoard *swboard = cmdproc->data; |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1171 char *text; |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1172 MsnMessage *cancel; |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1173 |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1174 cancel = msn_message_new(MSN_MSG_TEXT); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1175 msn_message_set_content_type(cancel, "text/x-msmsgsinvite"); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1176 msn_message_set_charset(cancel, "UTF-8"); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1177 msn_message_set_flag(cancel, 'U'); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1178 |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1179 text = g_strdup_printf("Invitation-Command: CANCEL\r\n" |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1180 "Invitation-Cookie: %s\r\n" |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1181 "Cancel-Code: REJECT_NOT_INSTALLED\r\n", |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1182 cookie); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1183 msn_message_set_bin_data(cancel, text, strlen(text)); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1184 g_free(text); |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1185 |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1186 msn_switchboard_send_msg(swboard, cancel, TRUE); |
30952
b4285ea42b6e
msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <mark@kingant.net>
parents:
30935
diff
changeset
|
1187 msn_message_unref(cancel); |
27868
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1188 } |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1189 |
30069
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1190 } else if (!strcmp(command, "CANCEL")) { |
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1191 const gchar *code = g_hash_table_lookup(body, "Cancel-Code"); |
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1192 purple_debug_info("msn", "MSMSGS invitation cancelled: %s.\n", |
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1193 code ? code : "no reason given"); |
5044315e81e1
Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30060
diff
changeset
|
1194 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1195 } else { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1196 /* |
30026
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1197 * Some other already established invitation session. |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1198 * Can be retrieved by Invitation-Cookie. |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1199 */ |
27868
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1200 } |
9262c8f306a6
Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27867
diff
changeset
|
1201 |
26518
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1202 g_hash_table_destroy(body); |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1203 } |
79e043347bbe
Notify the user if a contact invites them to a voice call over MSN.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25461
diff
changeset
|
1204 |
27292
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1205 /* Only called from chats. Handwritten messages for IMs come as a SLP message */ |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1206 void |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1207 msn_handwritten_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1208 { |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1209 const char *body; |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1210 size_t body_len; |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1211 |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1212 body = msn_message_get_bin_data(msg, &body_len); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1213 msn_switchboard_show_ink(cmdproc->data, msg->remote_user, body); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1214 } |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1215 |