Mercurial > pidgin
annotate libpurple/protocols/msn/msg.c @ 31823:6f3df8fc3037
Remove checks for NEWS. We're not using this file anymore. Most people
don't read it. If there is NEWS that we want to provide to people then
we are better off posting it on the web site (although we might want to
come up with a better "news" section)
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 20 Aug 2011 18:43:12 +0000 |
parents | cf702c6ab9e7 |
children | 60d879806964 3828a61c44da aacfb71133cc |
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 |
30787 | 260 if ((!content_type || !strcmp(content_type, "text/plain")) |
261 && msg->charset == NULL) { | |
262 char *body = g_convert(msg->body, msg->body_len, "UTF-8", | |
263 "ISO-8859-1", NULL, &msg->body_len, NULL); | |
264 g_free(msg->body); | |
265 msg->body = body; | |
266 msg->charset = g_strdup("UTF-8"); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
269 g_free(tmp_base); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
270 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 MsnMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
273 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
|
274 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 MsnMessage *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
276 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
277 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
|
278 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 msg = msn_message_new(MSN_MSG_UNKNOWN); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
281 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
|
282 /* msg->size = atoi(cmd->params[2]); */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 msg->cmd = cmd; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 return msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 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
|
290 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 char *n, *base, *end; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 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
|
294 size_t body_len = 0; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 const void *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 g_return_val_if_fail(msg != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 len = MSN_BUF_LEN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 base = n = end = g_malloc(len + 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 end += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 /* Standard header. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 if (msg->charset == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 g_snprintf(n, len, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 "Content-Type: %s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 msg->content_type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 g_snprintf(n, len, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 "Content-Type: %s; charset=%s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 msg->content_type, msg->charset); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 n += strlen(n); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
322 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
|
323 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 const char *key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 const char *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 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
|
328 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
|
329 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 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
|
331 n += strlen(n); |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 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
|
335 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 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
|
337 |
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
|
338 if (body != NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 { |
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
|
340 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
|
341 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
|
342 *n = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 if (ret_size != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 *ret_size = n - base; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 if (*ret_size > 1664) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
350 *ret_size = 1664; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
351 } |
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 return base; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 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
|
358 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 g_return_if_fail(flag != 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 msg->flag = flag; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 char |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 msn_message_get_flag(const MsnMessage *msg) |
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 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
|
369 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 return msg->flag; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 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
|
375 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 g_return_if_fail(msg != NULL); |
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 /* 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
|
379 if (len > 1664) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 len = 1664; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 if (msg->body != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
383 g_free(msg->body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 if (data != NULL && len > 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 { |
24388
7e8175f9b009
It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents:
24207
diff
changeset
|
387 msg->body = g_malloc(len + 1); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 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
|
389 msg->body[len] = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 msg->body_len = len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 msg->body = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 msg->body_len = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 } |
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 const void * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 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
|
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, NULL); |
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 if (len) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 *len = msg->body_len; |
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 return msg->body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 } |
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 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 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
|
412 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 |
20991
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
415 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
|
416 msg->content_type = g_strdup(type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 } |
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 const char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 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
|
421 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
422 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
|
423 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
424 return msg->content_type; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
427 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 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
|
429 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
430 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
431 |
20991
c8f99cb61dc9
Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20989
diff
changeset
|
432 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
|
433 msg->charset = g_strdup(charset); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 } |
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 const char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 msn_message_get_charset(const MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
438 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
439 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
|
440 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
441 return msg->charset; |
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 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
445 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
|
446 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 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
|
448 char *new_name; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
449 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
450 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
|
451 g_return_if_fail(name != NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
452 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
453 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
|
454 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 if (value == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
456 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 if (temp != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
459 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
461 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
|
462 { |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
463 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
|
464 { |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
465 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
|
466 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
467 break; |
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 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
471 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
|
472 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
473 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
474 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
475 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
476 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
477 new_name = g_strdup(name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
478 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
479 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
|
480 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
481 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
|
482 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
|
483 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
484 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
485 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
|
486 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
|
487 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
488 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
|
489 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
|
490 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
491 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
|
492 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
493 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 GHashTable * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
495 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
|
496 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
497 GHashTable *table; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
499 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
500 char **elems, **cur, **tokens, *body_str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
502 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
|
503 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 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
|
505 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 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
|
507 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 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
|
509 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
510 body_str = g_strndup(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
511 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
|
512 g_free(body_str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 for (cur = elems; *cur != NULL; cur++) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
515 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
516 if (**cur == '\0') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
517 break; |
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 tokens = g_strsplit(*cur, ": ", 2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
520 |
20935
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
521 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
|
522 g_hash_table_insert(table, tokens[0], tokens[1]); |
20935
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
523 g_free(tokens); |
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
524 } else |
1d9d5de48b9e
Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20517
diff
changeset
|
525 g_strfreev(tokens); |
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 g_strfreev(elems); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 return table; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 msn_message_to_string(MsnMessage *msg) |
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 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 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
|
540 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
|
541 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 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
|
543 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 return g_strndup(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 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
|
549 gboolean text_body) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 GString *str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 size_t body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 const char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
555 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 g_return_if_fail(msg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
557 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 str = g_string_new(NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
560 /* Standard header. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 if (msg->charset == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 g_string_append_printf(str, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 "Content-Type: %s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 msg->content_type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 else |
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 g_string_append_printf(str, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 "MIME-Version: 1.0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 "Content-Type: %s; charset=%s\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 msg->content_type, msg->charset); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
574 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
575 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
576 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
|
577 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
578 char *key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 const char *value; |
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 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
|
582 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
|
583 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 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
|
585 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 g_string_append(str, "\r\n"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 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
|
590 |
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
|
591 if (body != NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
592 { |
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
|
593 if (msg->type == MSN_MSG_TEXT) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
595 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
|
596 g_string_append(str, "\r\n"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
597 } |
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
|
598 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
|
599 { |
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
|
600 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
|
601 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
|
602 { |
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
|
603 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
|
604 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
|
605 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
|
606 } |
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
|
607 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
|
608 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
609 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
610 |
15822 | 611 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
|
612 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 g_string_free(str, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
615 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
616 /************************************************************************** |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
617 * 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
|
618 **************************************************************************/ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
619 void |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
620 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
|
621 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
622 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
|
623 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
|
624 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
|
625 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
|
626 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
|
627 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
|
628 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
|
629 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
630 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
|
631 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
632 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
|
633 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
|
634 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
635 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
|
636 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
637 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
|
638 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
|
639 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
640 return; |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
641 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
642 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
643 #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
|
644 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
|
645 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
646 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
|
647 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
648 #endif |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
649 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
650 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
|
651 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
652 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
|
653 |
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_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
|
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 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
|
657 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
|
658 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
659 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
|
660 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
|
661 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
|
662 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
663 else |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
664 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
665 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
|
666 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
667 |
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
|
668 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
|
669 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
|
670 |
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
|
671 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
|
672 |
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
|
673 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
|
674 ((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
|
675 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
|
676 { |
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
|
677 /* 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
|
678 * 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
|
679 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
|
680 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
|
681 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
|
682 |
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
|
683 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
|
684 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
|
685 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
|
686 { |
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
|
687 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
|
688 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
|
689 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
690 } |
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
|
691 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
|
692 { |
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
|
693 /* 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
|
694 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
|
695 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
|
696 { |
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
|
697 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
|
698 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
|
699 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
|
700 } |
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
|
701 } |
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 |
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 } 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
|
704 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
|
705 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
706 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
707 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
|
708 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
709 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
710 void |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
711 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
|
712 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
713 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
|
714 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
|
715 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
716 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
|
717 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
|
718 |
30694
33b4ae796648
Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents:
27868
diff
changeset
|
719 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
|
720 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
|
721 |
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 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
|
723 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
|
724 |
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
|
725 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
|
726 { |
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
|
727 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
|
728 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
|
729 } |
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 } 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
|
732 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
|
733 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
|
734 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
735 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
736 |
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
|
737 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
|
738 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
|
739 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
|
740 { |
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
|
741 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
|
742 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
|
743 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
|
744 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
|
745 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
|
746 |
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
|
747 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
|
748 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
|
749 |
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
|
750 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
|
751 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
|
752 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
|
753 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
|
754 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
|
755 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
|
756 |
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
|
757 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
|
758 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
|
759 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
|
760 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
|
761 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
|
762 |
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
|
763 if (swboard->conv == NULL) { |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
764 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
|
765 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
|
766 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
|
767 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
|
768 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
|
769 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
|
770 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
|
771 } |
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 } |
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 |
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
|
774 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
|
775 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
|
776 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
|
777 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
|
778 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
|
779 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
|
780 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
|
781 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
|
782 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
|
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 } |
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 |
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 /* TODO: Make these not be such duplicates of each other */ |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
787 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
|
788 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
|
789 { |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
790 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
|
791 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
|
792 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
|
793 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
|
794 |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
795 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
|
796 (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
|
797 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
|
798 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
|
799 _("%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
|
800 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
|
801 } 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
|
802 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
|
803 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
|
804 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 _("%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
|
806 NULL); |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
807 } |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
808 if (f) |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
809 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
|
810 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
|
811 } |
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
|
812 |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
813 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
|
814 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
|
815 { |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
816 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
|
817 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
|
818 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
|
819 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
|
820 |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
821 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
|
822 (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
|
823 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
|
824 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
|
825 _("%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
|
826 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
|
827 } 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
|
828 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
|
829 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
|
830 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
|
831 _("%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
|
832 NULL); |
29779
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
833 } |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
834 if (f) |
1c3ee8378e2e
I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29310
diff
changeset
|
835 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
|
836 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
|
837 } |
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 |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
839 void |
30812
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
840 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
|
841 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
842 MsnSession *session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
843 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
|
844 MsnP2PVersion p2p; |
30812
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
845 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
846 session = cmdproc->servconn->session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
847 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
|
848 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
849 if (slplink->swboard == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
850 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
851 /* |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
852 * 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
|
853 * 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
|
854 * 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
|
855 * 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
|
856 * 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
|
857 * cause more crashes. Stu. |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
858 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
859 if (cmdproc->data == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
860 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
|
861 else { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
862 slplink->swboard = (MsnSwitchBoard *)cmdproc->data; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
863 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
|
864 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
865 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
866 |
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
|
867 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
|
868 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
|
869 |
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
|
870 if (msg->part) |
30858
2d00d29a45fd
Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
masca@cpw.pidgin.im
parents:
30850
diff
changeset
|
871 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
|
872 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
|
873 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
|
874 } |
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 static void |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
877 got_emoticon(MsnSlpCall *slpcall, |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
878 const guchar *data, gsize size) |
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 PurpleConversation *conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
881 MsnSwitchBoard *swboard; |
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 swboard = slpcall->slplink->swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
884 conv = swboard->conv; |
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 if (conv) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
887 /* 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
|
888 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
|
889 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
|
890 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
891 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
|
892 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
|
893 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
894 if (purple_debug_is_verbose()) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
895 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
|
896 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
897 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
898 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
|
899 { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
900 MsnSession *session; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
901 MsnSlpLink *slplink; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
902 MsnSwitchBoard *swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
903 MsnObject *obj; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
904 char **tokens; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
905 char *smile, *body_str; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
906 const char *body, *who, *sha1; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
907 guint tok; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
908 size_t body_len; |
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 PurpleConversation *conv; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
911 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
912 session = cmdproc->servconn->session; |
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 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
|
915 return; |
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 = cmdproc->data; |
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 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
|
921 if (!body || !body_len) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
922 return; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
923 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
|
924 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
925 /* 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
|
926 * 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
|
927 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
|
928 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
929 g_free(body_str); |
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 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
|
932 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
|
933 break; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
934 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
935 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
936 smile = tokens[tok]; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
937 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
|
938 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
939 if (obj == NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
940 break; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
941 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
942 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
|
943 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
|
944 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
945 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
|
946 if (slplink->swboard != swboard) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
947 if (slplink->swboard != NULL) |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
948 /* |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
949 * 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
|
950 * 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
|
951 * 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
|
952 * 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
|
953 */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
954 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
|
955 slplink->swboard = swboard; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
956 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
|
957 } |
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 /* 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
|
960 * 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
|
961 * 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
|
962 * 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
|
963 * 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
|
964 * smiley with its GtkIMHtml widget. */ |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
965 if (!conv) { |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
966 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
|
967 } |
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 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
|
970 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
|
971 } |
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 msn_object_destroy(obj); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
974 obj = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
975 who = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
976 sha1 = NULL; |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
977 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
978 g_strfreev(tokens); |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
979 } |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
980 |
623e38669111
Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents:
30801
diff
changeset
|
981 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
|
982 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
|
983 { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
984 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
|
985 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
|
986 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
|
987 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
988 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
|
989 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
990 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
|
991 /* Nudge */ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
992 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
|
993 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
|
994 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
995 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
|
996 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
|
997 |
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
|
998 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
|
999 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
|
1000 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
|
1001 ((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
|
1002 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
|
1003 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
|
1004 |
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
|
1005 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
|
1006 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
|
1007 } 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
|
1008 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
|
1009 } |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1010 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1011 } 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
|
1012 /* 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
|
1013 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
|
1014 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
|
1015 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
|
1016 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
|
1017 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
|
1018 |
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
|
1019 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
|
1020 |
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
|
1021 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
|
1022 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
|
1023 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
|
1024 |
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
|
1025 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
|
1026 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
|
1027 |
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
|
1028 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
|
1029 |
25398
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1030 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1031 } 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
|
1032 /* 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
|
1033 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
|
1034 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
|
1035 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
|
1036 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
|
1037 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
|
1038 |
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
|
1039 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
|
1040 |
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
|
1041 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
|
1042 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
|
1043 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
|
1044 |
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
|
1045 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
|
1046 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
|
1047 |
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 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
|
1049 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1050 } 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
|
1051 /* Action */ |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1052 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1053 } else { |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1054 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
|
1055 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1056 |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1057 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
|
1058 } |
ea98810d89c5
Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25309
diff
changeset
|
1059 |
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
|
1060 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
|
1061 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
|
1062 { |
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
|
1063 GHashTable *body; |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1064 const gchar *command; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1065 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
|
1066 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
|
1067 |
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
|
1068 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
|
1069 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
|
1070 |
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
|
1071 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
|
1072 |
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
|
1073 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
|
1074 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
|
1075 "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
|
1076 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
|
1077 } |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1078 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1079 /* |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1080 * 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
|
1081 * are mandatory. |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1082 */ |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1083 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
|
1084 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
|
1085 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1086 if (command == NULL || cookie == NULL) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1087 purple_debug_warning("msn", |
30026
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1088 "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
|
1089 "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
|
1090 ); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1091 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
|
1092 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1093 } else if (!strcmp(command, "INVITE")) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1094 const gchar *guid = g_hash_table_lookup(body, "Application-GUID"); |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1095 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1096 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
|
1097 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
|
1098 "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
|
1099 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1100 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
|
1101 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1102 } 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
|
1103 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1104 } 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
|
1105 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
|
1106 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1107 if (cmdproc->session) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1108 PurpleConversation *conv = NULL; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1109 gchar *from = msg->remote_user; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1110 gchar *buf = NULL; |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1111 |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1112 if (from) |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1113 conv = purple_find_conversation_with_account( |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1114 PURPLE_CONV_TYPE_IM, from, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1115 cmdproc->session->account); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1116 if (conv) |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1117 buf = g_strdup_printf( |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1118 _("%s sent you a voice chat " |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1119 "invite, which is not yet " |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1120 "supported."), from); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1121 if (buf) { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1122 purple_conversation_write(conv, NULL, buf, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1123 PURPLE_MESSAGE_SYSTEM | |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1124 PURPLE_MESSAGE_NOTIFY, |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1125 time(NULL)); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1126 g_free(buf); |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1127 } |
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
|
1128 } |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1129 } else { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1130 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
|
1131 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
|
1132 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
|
1133 } |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31036
diff
changeset
|
1134 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1135 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
|
1136 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
|
1137 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
|
1138 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
|
1139 |
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
|
1140 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
|
1141 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
|
1142 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
|
1143 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
|
1144 |
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
|
1145 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
|
1146 "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
|
1147 "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
|
1148 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
|
1149 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
|
1150 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
|
1151 |
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
|
1152 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
|
1153 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
|
1154 } |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1155 |
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
|
1156 } 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
|
1157 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
|
1158 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
|
1159 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
|
1160 |
30013
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1161 } else { |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1162 /* |
30026
538ca314c5f8
More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30013
diff
changeset
|
1163 * 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
|
1164 * Can be retrieved by Invitation-Cookie. |
119bd7b072eb
Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents:
29310
diff
changeset
|
1165 */ |
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
|
1166 } |
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
|
1167 |
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
|
1168 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
|
1169 } |
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
|
1170 |
27292
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1171 /* 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
|
1172 void |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1173 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
|
1174 { |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1175 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
|
1176 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
|
1177 |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1178 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
|
1179 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
|
1180 } |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26518
diff
changeset
|
1181 |