annotate libpurple/protocols/msn/msg.c @ 31086:a8cc50c2279f

Remove trailing whitespace
author Richard Laager <rlaager@wiktel.com>
date Tue, 04 Jan 2011 06:55:30 +0000
parents 05e05d96ba75
children 34da321b60f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
4 * purple
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 *
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
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
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
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 msg->msnslp_message = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 msn_message_set_flag(msg, 'D');
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 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
142
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 return msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 MsnMessage *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 msn_message_new_nudge(void)
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 MsnMessage *msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 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
152 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
153 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
154 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
155
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 return msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 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
161 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
162 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
163 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 char *tmp_base, *tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 const char *content_type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 char *end;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 char **elems, **cur, **tokens;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 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
170 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
171 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
172 tmp_base[payload_len] = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
174 /* 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
175 end = strstr(tmp, body_dem);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 /* 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
177 * 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
178 * avoid crashing for now */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 if (end == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 g_free(tmp_base);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 g_return_if_reached();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 *end = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
184
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
185 /* 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
186 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
187 for (cur = elems; *cur != NULL; cur++)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 const char *key, *value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190
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
191 /* 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
192 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
193 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
194 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
195 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
196 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
197
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 /* 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
199 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
200 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
201 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
202 *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
203 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
204 }
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
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 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
207 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
208 }
c09a647fd538 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24388
diff changeset
209
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 tokens = g_strsplit(*cur, ": ", 2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 key = tokens[0];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 value = tokens[1];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214
20394
4a099e4d0d09 propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents: 15822
diff changeset
215 /*if not MIME content ,then return*/
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 if (!strcmp(key, "MIME-Version"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 g_strfreev(tokens);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 }
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 if (!strcmp(key, "Content-Type"))
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 char *charset, *c;
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 ((c = strchr(value, ';')) != 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 if ((charset = strchr(c, '=')) != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 charset++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 msn_message_set_charset(msg, charset);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 }
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 *c = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235 }
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 msn_message_set_content_type(msg, value);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 {
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
241 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
242 }
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(tokens);
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 g_strfreev(elems);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 /* 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
249 tmp = end + strlen(body_dem);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 /* Now we *should* be at the body. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252 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
253
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 if (content_type != NULL &&
30785
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
255 !strcmp(content_type, "application/x-msnmsgrp2p")) {
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
256 msg->msnslp_message = TRUE;
30801
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
257 msg->part = msn_slpmsgpart_new_from_data(tmp, payload_len - (tmp - tmp_base));
30785
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
258 }
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
259
30787
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
260 if (payload_len - (tmp - tmp_base) > 0) {
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
261 msg->body_len = payload_len - (tmp - tmp_base);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
262 g_free(msg->body);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
263 msg->body = g_malloc(msg->body_len + 1);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
264 memcpy(msg->body, tmp, msg->body_len);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
265 msg->body[msg->body_len] = '\0';
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
266 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267
30787
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
268 if ((!content_type || !strcmp(content_type, "text/plain"))
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
269 && msg->charset == NULL) {
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
270 char *body = g_convert(msg->body, msg->body_len, "UTF-8",
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
271 "ISO-8859-1", NULL, &msg->body_len, NULL);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
272 g_free(msg->body);
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
273 msg->body = body;
155db1253acf Remove replaced code.
masca@cpw.pidgin.im
parents: 30785
diff changeset
274 msg->charset = g_strdup("UTF-8");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 }
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_free(tmp_base);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 MsnMessage *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 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
282 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 MsnMessage *msg;
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 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
286
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 msg = msn_message_new(MSN_MSG_UNKNOWN);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 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
290 /* msg->size = atoi(cmd->params[2]); */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 msg->cmd = cmd;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 return msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 char *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 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
298 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
299 GList *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 char *n, *base, *end;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 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
302 size_t body_len = 0;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 const void *body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 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
306
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 len = MSN_BUF_LEN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 base = n = end = g_malloc(len + 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 end += len;
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 /* Standard header. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 if (msg->charset == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 g_snprintf(n, len,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 "MIME-Version: 1.0\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 "Content-Type: %s\r\n",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 msg->content_type);
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 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 g_snprintf(n, len,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 "MIME-Version: 1.0\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 "Content-Type: %s; charset=%s\r\n",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 msg->content_type, msg->charset);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 n += strlen(n);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
330 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
331 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 const char *key;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333 const char *value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 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
336 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
337
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 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
339 n += strlen(n);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 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
343
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 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
345
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 if (msg->msnslp_message)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 {
30785
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
348 size_t siz;
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
349 char *body;
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
350
30801
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
351 body = msn_slpmsgpart_serialize(msg->part, &siz);
30785
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
352
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
353 memcpy(n, body, siz);
64e2fe53acc2 Use slp parse code that was just moved to SlpMessage since it belongs there
masca@cpw.pidgin.im
parents: 30773
diff changeset
354 n += siz;
30935
2de522fa534a Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30907
diff changeset
355
2de522fa534a Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30907
diff changeset
356 g_free(body);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
359 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 if (body != NULL)
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 memcpy(n, body, body_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363 n += body_len;
20394
4a099e4d0d09 propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents: 15822
diff changeset
364 *n = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
365 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 if (ret_size != NULL)
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 *ret_size = n - base;
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 if (*ret_size > 1664)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373 *ret_size = 1664;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 }
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 return base;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 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
381 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382 g_return_if_fail(msg != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383 g_return_if_fail(flag != 0);
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 msg->flag = flag;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 char
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 msn_message_get_flag(const MsnMessage *msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 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
392
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 return msg->flag;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 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
398 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 g_return_if_fail(msg != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 /* 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
402 if (len > 1664)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 len = 1664;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 if (msg->body != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 g_free(msg->body);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 if (data != NULL && len > 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409 {
24388
7e8175f9b009 It should be more efficient to just use g_mallc() and then manually
Mark Doliner <mark@kingant.net>
parents: 24207
diff changeset
410 msg->body = g_malloc(len + 1);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411 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
412 msg->body[len] = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 msg->body_len = len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 msg->body = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 msg->body_len = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 }
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 const void *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 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
424 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 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
426
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 if (len)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 *len = msg->body_len;
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 return msg->body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 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
435 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 g_return_if_fail(msg != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437
20991
c8f99cb61dc9 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20989
diff changeset
438 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
439 msg->content_type = g_strdup(type);
15373
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 const char *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 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
444 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 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
446
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 return msg->content_type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448 }
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 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 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
452 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 g_return_if_fail(msg != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454
20991
c8f99cb61dc9 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20989
diff changeset
455 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
456 msg->charset = g_strdup(charset);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 const char *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 msn_message_get_charset(const MsnMessage *msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462 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
463
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 return msg->charset;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 }
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 void
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
468 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
469 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 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
471 char *new_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 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
474 g_return_if_fail(name != NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
476 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
477
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 if (value == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 if (temp != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482 GList *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
484 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
485 {
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
486 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
487 {
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
488 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
489
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491 }
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
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
494 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
495 }
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 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
500 new_name = g_strdup(name);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
502 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
503
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 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
505 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
506 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508 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
509 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
510 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
511 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
512 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
513
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
514 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
515 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
517 GHashTable *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 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
519 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520 GHashTable *table;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521 size_t body_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 const char *body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
523 char **elems, **cur, **tokens, *body_str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
524
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525 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
526
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 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
528
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 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
530
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531 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
532
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 body_str = g_strndup(body, body_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 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
535 g_free(body_str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 for (cur = elems; *cur != NULL; cur++)
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 if (**cur == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
540 break;
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 tokens = g_strsplit(*cur, ": ", 2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543
20935
1d9d5de48b9e Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20517
diff changeset
544 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
545 g_hash_table_insert(table, tokens[0], tokens[1]);
20935
1d9d5de48b9e Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20517
diff changeset
546 g_free(tokens);
1d9d5de48b9e Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20517
diff changeset
547 } else
1d9d5de48b9e Fix some leaks.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20517
diff changeset
548 g_strfreev(tokens);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
550
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551 g_strfreev(elems);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
552
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
553 return table;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 }
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 char *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 msn_message_to_string(MsnMessage *msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
558 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
559 size_t body_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560 const char *body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
561
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 g_return_val_if_fail(msg != NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 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
564
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565 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
566
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567 return g_strndup(body, body_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 }
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 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 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
572 gboolean text_body)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 GString *str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575 size_t body_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576 const char *body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 GList *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 g_return_if_fail(msg != NULL);
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 str = g_string_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 /* Standard header. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584 if (msg->charset == NULL)
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 g_string_append_printf(str,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 "MIME-Version: 1.0\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588 "Content-Type: %s\r\n",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 msg->content_type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 g_string_append_printf(str,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 "MIME-Version: 1.0\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 "Content-Type: %s; charset=%s\r\n",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 msg->content_type, msg->charset);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
599 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
600 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
601 char *key;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
602 const char *value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604 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
605 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
606
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 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
608 }
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 g_string_append(str, "\r\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 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
613
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
614 if (msg->msnslp_message)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615 {
30801
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
616 g_string_append_printf(str, "Session ID: %u\r\n", msg->part->header->session_id);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
617 g_string_append_printf(str, "ID: %u\r\n", msg->part->header->id);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
618 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", msg->part->header->offset);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
619 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", msg->part->header->total_size);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
620 g_string_append_printf(str, "Length: %u\r\n", msg->part->header->length);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
621 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->part->header->flags);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
622 g_string_append_printf(str, "ACK ID: %u\r\n", msg->part->header->ack_id);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
623 g_string_append_printf(str, "SUB ID: %u\r\n", msg->part->header->ack_sub_id);
fd8abea40a0d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
masca@cpw.pidgin.im
parents: 30787
diff changeset
624 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->part->header->ack_size);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625
27483
3dcc42d3cc12 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27432
diff changeset
626 if (purple_debug_is_verbose() && body != NULL)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 if (text_body)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
630 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
631 if (body[body_len - 1] == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
632 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
633 str->len--;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 g_string_append(str, " 0x00");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
636 g_string_append(str, "\r\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 int i;
30845
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
641 int bin_len;
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
642
31033
52616e4f2299 Fix typo
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31031
diff changeset
643 if (msg->part->footer->value == P2P_APPID_SESSION)
30845
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
644 bin_len = P2P_PACKET_HEADER_SIZE;
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
645 else
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
646 bin_len = body_len;
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
647
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
648 for (i = 0; i < bin_len; i++)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650 g_string_append_printf(str, "%.2hhX ", body[i]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 if ((i % 16) == 15)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652 g_string_append(str, "\r\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 }
30845
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
654
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
655 if (bin_len == P2P_PACKET_HEADER_SIZE)
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
656 g_string_append_printf(str, "%s ", body + P2P_PACKET_HEADER_SIZE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 g_string_append(str, "\r\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660
30845
6e7a0e87d589 Print SLP data as text if it's a negociating session message.
masca@cpw.pidgin.im
parents: 30821
diff changeset
661 g_string_append_printf(str, "Footer: 0x%08X\r\n", msg->part->footer->value);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
664 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 if (body != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
666 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667 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
668 g_string_append(str, "\r\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
670 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
672 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
673
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
674 g_string_free(str, TRUE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 }
25398
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
676
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
677 /**************************************************************************
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
678 * 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
679 **************************************************************************/
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
680 void
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
681 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
682 {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
683 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
684 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
685 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
686 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
687 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
688 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
689 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
690
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
691 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
692
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
693 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
694 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
695
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
696 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
697
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
698 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
699 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
700 {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
701 return;
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
702 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
703
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
704 #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
705 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
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 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
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 #endif
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
710
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
711 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
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 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
714
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
715 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
716
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
717 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
718 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
719
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
720 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
721 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
722 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
723 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
724 else
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
725 {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
726 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
727 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
728
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
729 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
730 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
731
8ee34225cfd9 Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25398
diff changeset
732 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
733
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
734 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
735 ((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
736 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
737 {
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
738 /* 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
739 * 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
740 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
741 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
742 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
743
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
744 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
745 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
746 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
747 {
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
748 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
749 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
750 }
25398
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
751 }
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
752 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
753 {
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
754 /* 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
755 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
756 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
757 {
8ee34225cfd9 Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25398
diff changeset
758 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
759 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
760 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
761 }
8ee34225cfd9 Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25398
diff changeset
762 }
8ee34225cfd9 Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25398
diff changeset
763
8ee34225cfd9 Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25398
diff changeset
764 } 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
765 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
766 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
767
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
768 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
769 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
770
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
771 void
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
772 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
773 {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
774 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
775 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
776
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
777 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
778 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
779
30694
33b4ae796648 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <mark@kingant.net>
parents: 27868
diff changeset
780 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
781 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
782
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
783 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
784 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
785
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
786 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
787 {
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
788 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
789 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
790 }
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
791
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
792 } 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
793 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
794 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
795 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
796 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
797
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
798 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
799 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
800 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
801 {
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 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
803 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
804 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
805 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
806 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
807
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
808 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
809 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
810
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 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
812 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
813 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
814 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
815 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
816 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
817
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
818 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
819 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
820 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
821 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
822 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
823
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
824 if (swboard->conv == NULL) {
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
825 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
826 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
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 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
829 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
830 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
831 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
832 }
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
833 }
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
834
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
835 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
836 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
837 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
838 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
839 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
840 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
841 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
842 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
843 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
844
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
845 }
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
846
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
847 /* TODO: Make these not be such duplicates of each other */
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
848 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
849 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
850 {
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
851 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
852 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
853 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
854 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
855
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
856 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
857 (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
858 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
859 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
860 _("%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
861 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
862 } 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
863 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
864 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
865 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
866 _("%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
867 NULL);
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
868 }
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
869 if (f)
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
870 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
871 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
872 }
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
873
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
874 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
875 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
876 {
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
877 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
878 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
879 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
880 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
881
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
882 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
883 (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
884 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
885 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
886 _("%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
887 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
888 } 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
889 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
890 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
891 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
892 _("%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
893 NULL);
29779
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
894 }
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
895 if (f)
1c3ee8378e2e I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29310
diff changeset
896 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
897 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
898 }
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
899
25398
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
900 void
30812
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
901 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
902 {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
903 MsnSession *session;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
904 MsnSlpLink *slplink;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
905
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
906 session = cmdproc->servconn->session;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
907 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
908
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
909 if (slplink->swboard == NULL)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
910 {
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 * 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
913 * 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
914 * 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
915 * 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
916 * 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
917 * cause more crashes. Stu.
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
918 */
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
919 if (cmdproc->data == NULL)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
920 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
921 else {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
922 slplink->swboard = (MsnSwitchBoard *)cmdproc->data;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
923 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
924 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
925 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
926
30846
e0c374ad8fd3 Set the correct length of the data before calling the function to process it.
masca@cpw.pidgin.im
parents: 30845
diff changeset
927 if (msg->part) {
30858
2d00d29a45fd Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
masca@cpw.pidgin.im
parents: 30850
diff changeset
928 msn_slplink_process_msg(slplink, msg->part);
30846
e0c374ad8fd3 Set the correct length of the data before calling the function to process it.
masca@cpw.pidgin.im
parents: 30845
diff changeset
929 }
30820
4b0cb9435414 Prevent a crash, this should never happen. It needs a little more work before being fixed.
masca@cpw.pidgin.im
parents: 30812
diff changeset
930 else /* This should never happen. */
4b0cb9435414 Prevent a crash, this should never happen. It needs a little more work before being fixed.
masca@cpw.pidgin.im
parents: 30812
diff changeset
931 purple_debug_fatal("msn", "P2P message without a Part.\n");
30812
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
932 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
933
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
934 static void
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
935 got_emoticon(MsnSlpCall *slpcall,
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
936 const guchar *data, gsize size)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
937 {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
938 PurpleConversation *conv;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
939 MsnSwitchBoard *swboard;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
940
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
941 swboard = slpcall->slplink->swboard;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
942 conv = swboard->conv;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
943
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
944 if (conv) {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
945 /* 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
946 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
947 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
948 */
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
949 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
950 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
951 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
952 if (purple_debug_is_verbose())
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
953 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
954 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
955
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
956 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
957 {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
958 MsnSession *session;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
959 MsnSlpLink *slplink;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
960 MsnSwitchBoard *swboard;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
961 MsnObject *obj;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
962 char **tokens;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
963 char *smile, *body_str;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
964 const char *body, *who, *sha1;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
965 guint tok;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
966 size_t body_len;
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 PurpleConversation *conv;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
969
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
970 session = cmdproc->servconn->session;
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 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
973 return;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
974
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
975 swboard = cmdproc->data;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
976 conv = swboard->conv;
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 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
979 if (!body || !body_len)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
980 return;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
981 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
982
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
983 /* 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
984 * 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
985 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
986
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
987 g_free(body_str);
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
988
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
989 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
990 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
991 break;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
992 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
993
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
994 smile = tokens[tok];
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
995 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
996
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
997 if (obj == NULL)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
998 break;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
999
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1000 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
1001 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
1002
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1003 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
1004 if (slplink->swboard != swboard) {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1005 if (slplink->swboard != NULL)
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1006 /*
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1007 * 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
1008 * 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
1009 * 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
1010 * 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
1011 */
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1012 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
1013 slplink->swboard = swboard;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1014 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
1015 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1016
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1017 /* 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
1018 * 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
1019 * 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
1020 * 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
1021 * 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
1022 * smiley with its GtkIMHtml widget. */
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1023 if (!conv) {
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1024 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
1025 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1026
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1027 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
1028 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
1029 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1030
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1031 msn_object_destroy(obj);
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1032 obj = NULL;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1033 who = NULL;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1034 sha1 = NULL;
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1035 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1036 g_strfreev(tokens);
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1037 }
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1038
623e38669111 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
masca@cpw.pidgin.im
parents: 30801
diff changeset
1039 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
1040 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
1041 {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1042 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
1043 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
1044 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
1045
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1046 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
1047
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1048 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
1049 /* Nudge */
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1050 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
1051 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
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 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
1054 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
1055
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
1056 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
1057 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
1058 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
1059 ((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
1060 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
1061 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
1062
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
1063 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
1064 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
1065 } 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
1066 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
1067 }
25398
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1068
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1069 } 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
1070 /* 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
1071 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
1072 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
1073 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
1074 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
1075 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
1076
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
1077 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
1078
9c413bda20be Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27292
diff changeset
1079 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
1080 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
1081 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
1082
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
1083 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
1084 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
1085
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
1086 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
1087
25398
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1088
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1089 } 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
1090 /* 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
1091 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
1092 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
1093 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
1094 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
1095 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
1096
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
1097 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
1098
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
1099 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
1100 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
1101 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
1102
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
1103 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
1104 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
1105
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
1106 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
1107
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1108 } 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
1109 /* Action */
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1110
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1111 } else {
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1112 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
1113 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1114
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1115 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
1116 }
ea98810d89c5 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25309
diff changeset
1117
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
1118 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
1119 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
1120 {
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
1121 GHashTable *body;
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1122 const gchar *command;
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1123 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
1124 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
1125
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
1126 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
1127 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
1128
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
1129 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
1130
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
1131 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
1132 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
1133 "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
1134 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
1135 }
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
1136
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1137 /*
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1138 * 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
1139 * are mandatory.
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1140 */
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1141 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
1142 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
1143
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1144 if (command == NULL || cookie == NULL) {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1145 purple_debug_warning("msn",
30026
538ca314c5f8 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30013
diff changeset
1146 "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
1147 "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
1148 );
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1149 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
1150
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1151 } else if (!strcmp(command, "INVITE")) {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1152 const gchar *guid = g_hash_table_lookup(body, "Application-GUID");
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
1153
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1154 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
1155 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
1156 "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
1157
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1158 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
1159
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1160 } 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
1161
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1162 } 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
1163 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
1164
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1165 if (cmdproc->session) {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1166 PurpleConversation *conv = NULL;
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1167 gchar *from = msg->remote_user;
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1168 gchar *buf = NULL;
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1169
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1170 if (from)
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1171 conv = purple_find_conversation_with_account(
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1172 PURPLE_CONV_TYPE_IM, from,
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1173 cmdproc->session->account);
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1174 if (conv)
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1175 buf = g_strdup_printf(
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1176 _("%s sent you a voice chat "
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1177 "invite, which is not yet "
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1178 "supported."), from);
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1179 if (buf) {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1180 purple_conversation_write(conv, NULL, buf,
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1181 PURPLE_MESSAGE_SYSTEM |
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1182 PURPLE_MESSAGE_NOTIFY,
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1183 time(NULL));
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1184 g_free(buf);
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1185 }
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
1186 }
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1187 } else {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1188 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
1189 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
1190 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
1191 }
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31036
diff changeset
1192
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1193 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
1194 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
1195 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
1196 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
1197
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
1198 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
1199 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
1200 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
1201 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
1202
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
1203 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
1204 "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
1205 "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
1206 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
1207 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
1208 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
1209
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
1210 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
1211 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
1212 }
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1213
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
1214 } 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
1215 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
1216 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
1217 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
1218
30013
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1219 } else {
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1220 /*
30026
538ca314c5f8 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30013
diff changeset
1221 * 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
1222 * Can be retrieved by Invitation-Cookie.
119bd7b072eb Initial support for direct connections. Preliminary patch from ticket #247
kukkerman@gmail.com
parents: 29310
diff changeset
1223 */
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
1224 }
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
1225
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
1226 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
1227 }
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
1228
27292
a6d84d9de605 Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26518
diff changeset
1229 /* 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
1230 void
a6d84d9de605 Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26518
diff changeset
1231 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
1232 {
a6d84d9de605 Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26518
diff changeset
1233 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
1234 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
1235
a6d84d9de605 Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26518
diff changeset
1236 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
1237 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
1238 }
a6d84d9de605 Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26518
diff changeset
1239