libpurple/protocols/msn/msg.c

Mon, 22 Nov 2010 07:43:56 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Mon, 22 Nov 2010 07:43:56 +0000
changeset 31163
871af3e6f338
parent 31162
2c596217766b
child 31235
d347d296b0e6
permissions
-rw-r--r--

Nothing uses this return value, so stop returning it. I think it's weird
for an unref function to return a pointer to the object you unreffed.
I see how there could be an argument for such a thing... but it seems like
it would be better to write code that doesn't require knowing whether the
object you unreffed was destroyed.

4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file msg.c Message functions
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
8 * source distribution.
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
9 *
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * (at your option) any later version.
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * GNU General Public License for more details.
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 15884
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
24
30961
885064b16c54 Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30945
diff changeset
25 #include "internal.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
26 #include "debug.h"
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
27
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 #include "msn.h"
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
29 #include "msg.h"
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
30 #include "msnutils.h"
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
31 #include "slpmsg.h"
31023
fbf4d4d3aaad Destroy Part when the Message is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31022
diff changeset
32 #include "slpmsg_part.h"
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
34 MsnMessage *
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
35 msn_message_new(MsnMsgType type)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
36 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
37 MsnMessage *msg;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
38
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
39 msg = g_new0(MsnMessage, 1);
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
40 msg->type = type;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
41
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
42 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
43 purple_debug_info("msn", "message new (%p)(%d)\n", msg, type);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
44
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
45 msg->header_table = g_hash_table_new_full(g_str_hash, g_str_equal,
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
46 g_free, g_free);
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
47
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
48 msn_message_ref(msg);
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
49
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
50 return msg;
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
51 }
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
52
31162
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
53 /**
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
54 * Destroys a message.
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
55 *
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
56 * @param msg The message to destroy.
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
57 */
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
58 static void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
59 msn_message_destroy(MsnMessage *msg)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
60 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
61 g_return_if_fail(msg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
62
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
63 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
64 purple_debug_info("msn", "message destroy (%p)\n", msg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
65
21067
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
66 g_free(msg->remote_user);
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
67 g_free(msg->body);
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
68 g_free(msg->content_type);
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
69 g_free(msg->charset);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
70
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
71 g_hash_table_destroy(msg->header_table);
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
72 g_list_free(msg->header_list);
31052
b9bbf14513f5 A Message may not have a part, use destroy which return silently when part == NULL instead of asserting.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31049
diff changeset
73 msn_slpmsgpart_destroy(msg->part);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
74
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
75 g_free(msg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
76 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
77
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
78 MsnMessage *
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
79 msn_message_ref(MsnMessage *msg)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
80 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
81 g_return_val_if_fail(msg != NULL, NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
82
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
83 msg->ref_count++;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
84
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
85 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
86 purple_debug_info("msn", "message ref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
87
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
88 return msg;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
89 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
90
31163
871af3e6f338 Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <markdoliner@pidgin.im>
parents: 31162
diff changeset
91 void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
92 msn_message_unref(MsnMessage *msg)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
93 {
31163
871af3e6f338 Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <markdoliner@pidgin.im>
parents: 31162
diff changeset
94 g_return_if_fail(msg != NULL);
871af3e6f338 Nothing uses this return value, so stop returning it. I think it's weird
Mark Doliner <markdoliner@pidgin.im>
parents: 31162
diff changeset
95 g_return_if_fail(msg->ref_count > 0);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
96
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
97 msg->ref_count--;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
98
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
99 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27690
diff changeset
100 purple_debug_info("msn", "message unref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
101
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
102 if (msg->ref_count == 0)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
103 msn_message_destroy(msg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
104 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
105
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
106 MsnMessage *
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
107 msn_message_new_plain(const char *message)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
108 {
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
109 MsnMessage *msg;
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
110 char *message_cr;
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
111
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
112 msg = msn_message_new(MSN_MSG_TEXT);
24420
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 23262
diff changeset
113 msg->retries = 1;
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
114 msn_message_set_header(msg, "User-Agent", PACKAGE_NAME "/" VERSION);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
115 msn_message_set_content_type(msg, "text/plain");
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
116 msn_message_set_charset(msg, "UTF-8");
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
117 msn_message_set_flag(msg, 'A');
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
118 msn_message_set_header(msg, "X-MMS-IM-Format",
25417
81b343445003 Fixes #7373, the new live messenger client now sends Segoe UI as the default
Ka-Hing Cheung <khc@pidgin.im>
parents: 25161
diff changeset
119 "FN=Segoe%20UI; EF=; CO=0; CS=1;PF=0");
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
120
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
121 message_cr = purple_str_add_cr(message);
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
122 msn_message_set_bin_data(msg, message_cr, strlen(message_cr));
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
123 g_free(message_cr);
5506
b53a1acacefe [gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents: 5478
diff changeset
124
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
125 return msg;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
126 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
127
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
128 MsnMessage *
6800
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
129 msn_message_new_msnslp(void)
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
130 {
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
131 MsnMessage *msg;
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
132
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
133 msg = msn_message_new(MSN_MSG_SLP);
6800
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
134
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
135 msn_message_set_header(msg, "User-Agent", NULL);
6800
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
136
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
137 msg->msnslp_message = TRUE;
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
138
6868
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
139 msn_message_set_flag(msg, 'D');
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
140 msn_message_set_content_type(msg, "application/x-msnmsgrp2p");
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
141
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
142 return msg;
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
143 }
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
144
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
145 MsnMessage *
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
146 msn_message_new_nudge(void)
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
147 {
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
148 MsnMessage *msg;
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
149
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
150 msg = msn_message_new(MSN_MSG_NUDGE);
23262
642669494d17 Fix a TODO uncovered by Mark the other day. Instead of using a hacky
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23235
diff changeset
151 msn_message_set_content_type(msg, "text/x-msnmsgr-datacast");
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
152 msn_message_set_flag(msg, 'N');
23262
642669494d17 Fix a TODO uncovered by Mark the other day. Instead of using a hacky
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23235
diff changeset
153 msn_message_set_bin_data(msg, "ID: 1\r\n", 7);
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
154
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
155 return msg;
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
156 }
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11235
diff changeset
157
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
158 void
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
159 msn_message_parse_payload(MsnMessage *msg,
13886
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
160 const char *payload, size_t payload_len,
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
161 const char *line_dem,const char *body_dem)
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
162 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
163 char *tmp_base, *tmp;
7845
edeb70aa2413 [gaim-migrate @ 8499]
Christian Hammond <chipx86@chipx86.com>
parents: 7604
diff changeset
164 const char *content_type;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
165 char *end;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
166 char **elems, **cur, **tokens;
5454
5263b77f0ad9 [gaim-migrate @ 5842]
Christian Hammond <chipx86@chipx86.com>
parents: 5315
diff changeset
167
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
168 g_return_if_fail(payload != NULL);
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
169 tmp_base = tmp = g_malloc(payload_len + 1);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
170 memcpy(tmp_base, payload, payload_len);
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
171 tmp_base[payload_len] = '\0';
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
172
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
173 /* Find the end of the headers */
13886
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
174 end = strstr(tmp, body_dem);
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
175 /* TODO? some clients use \r delimiters instead of \r\n, the official client
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
176 * doesn't send such messages, but does handle receiving them. We'll just
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
177 * avoid crashing for now */
10981
11def8085a30 [gaim-migrate @ 12812]
Daniel Atallah <datallah@pidgin.im>
parents: 10481
diff changeset
178 if (end == NULL) {
11def8085a30 [gaim-migrate @ 12812]
Daniel Atallah <datallah@pidgin.im>
parents: 10481
diff changeset
179 g_free(tmp_base);
11def8085a30 [gaim-migrate @ 12812]
Daniel Atallah <datallah@pidgin.im>
parents: 10481
diff changeset
180 g_return_if_reached();
11def8085a30 [gaim-migrate @ 12812]
Daniel Atallah <datallah@pidgin.im>
parents: 10481
diff changeset
181 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
182 *end = '\0';
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
183
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
184 /* Split the headers and parse each one */
13886
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
185 elems = g_strsplit(tmp, line_dem, 0);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
186 for (cur = elems; *cur != NULL; cur++)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
187 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
188 const char *key, *value;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
189
25161
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
190 /* If this line starts with whitespace, it's been folded from the
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
191 previous line and won't have ':'. */
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
192 if ((**cur == ' ') || (**cur == '\t')) {
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
193 tokens = g_strsplit(g_strchug(*cur), "=\"", 2);
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
194 key = tokens[0];
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
195 value = tokens[1];
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
196
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
197 /* The only one I care about is 'boundary' (which is folded from
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
198 the key 'Content-Type'), so only process that. */
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
199 if (!strcmp(key, "boundary")) {
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
200 char *end = strchr(value, '\"');
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
201 *end = '\0';
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
202 msn_message_set_header(msg, key, value);
25161
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
203 }
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
204
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
205 g_strfreev(tokens);
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
206 continue;
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
207 }
4dacf7e20b77 When parsing MSN message payload headers, check for folded lines. The only
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24608
diff changeset
208
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
209 tokens = g_strsplit(*cur, ": ", 2);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
210
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
211 key = tokens[0];
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
212 value = tokens[1];
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
213
13854
ab947cf0c2bb [gaim-migrate @ 16473]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
214 /*if not MIME content ,then return*/
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
215 if (!strcmp(key, "MIME-Version"))
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
216 {
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
217 g_strfreev(tokens);
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
218 continue;
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
219 }
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
220
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
221 if (!strcmp(key, "Content-Type"))
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
222 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
223 char *charset, *c;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
224
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
225 if ((c = strchr(value, ';')) != NULL)
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
226 {
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
227 if ((charset = strchr(c, '=')) != NULL)
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
228 {
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
229 charset++;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
230 msn_message_set_charset(msg, charset);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
231 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
232
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
233 *c = '\0';
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
234 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
235
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
236 msn_message_set_content_type(msg, value);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
237 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
238 else
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
239 {
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
240 msn_message_set_header(msg, key, value);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
241 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
242
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
243 g_strfreev(tokens);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
244 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
245 g_strfreev(elems);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
246
10981
11def8085a30 [gaim-migrate @ 12812]
Daniel Atallah <datallah@pidgin.im>
parents: 10481
diff changeset
247 /* Proceed to the end of the "\r\n\r\n" */
13886
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
248 tmp = end + strlen(body_dem);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
249
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
250 /* Now we *should* be at the body. */
7845
edeb70aa2413 [gaim-migrate @ 8499]
Christian Hammond <chipx86@chipx86.com>
parents: 7604
diff changeset
251 content_type = msn_message_get_content_type(msg);
edeb70aa2413 [gaim-migrate @ 8499]
Christian Hammond <chipx86@chipx86.com>
parents: 7604
diff changeset
252
edeb70aa2413 [gaim-migrate @ 8499]
Christian Hammond <chipx86@chipx86.com>
parents: 7604
diff changeset
253 if (content_type != NULL &&
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
254 !strcmp(content_type, "application/x-msnmsgrp2p")) {
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
255 msg->msnslp_message = TRUE;
31003
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
256 msg->part = msn_slpmsgpart_new_from_data(tmp, payload_len - (tmp - tmp_base));
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
257 }
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
258
30989
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
259 if (payload_len - (tmp - tmp_base) > 0) {
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
260 msg->body_len = payload_len - (tmp - tmp_base);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
261 g_free(msg->body);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
262 msg->body = g_malloc(msg->body_len + 1);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
263 memcpy(msg->body, tmp, msg->body_len);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
264 msg->body[msg->body_len] = '\0';
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
265 }
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
266
30989
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
267 if ((!content_type || !strcmp(content_type, "text/plain"))
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
268 && msg->charset == NULL) {
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
269 char *body = g_convert(msg->body, msg->body_len, "UTF-8",
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
270 "ISO-8859-1", NULL, &msg->body_len, NULL);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
271 g_free(msg->body);
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
272 msg->body = body;
e826f32521d6 Remove replaced code.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30987
diff changeset
273 msg->charset = g_strdup("UTF-8");
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
274 }
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
275
6011
a7fd3284655c [gaim-migrate @ 6459]
Christian Hammond <chipx86@chipx86.com>
parents: 5506
diff changeset
276 g_free(tmp_base);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
277 }
6011
a7fd3284655c [gaim-migrate @ 6459]
Christian Hammond <chipx86@chipx86.com>
parents: 5506
diff changeset
278
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
279 MsnMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
280 msn_message_new_from_cmd(MsnSession *session, MsnCommand *cmd)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
281 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
282 MsnMessage *msg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
283
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
284 g_return_val_if_fail(cmd != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
285
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
286 msg = msn_message_new(MSN_MSG_UNKNOWN);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
287
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
288 msg->remote_user = g_strdup(cmd->params[0]);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
289 /* msg->size = atoi(cmd->params[2]); */
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
290 msg->cmd = cmd;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
291
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
292 return msg;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
293 }
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
295 char *
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
296 msn_message_gen_slp_body(MsnMessage *msg, size_t *ret_size)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
297 {
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
298 char *tmp;
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
299
31003
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
300 tmp = msn_slpmsgpart_serialize(msg->part, ret_size);
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
301 return tmp;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
302 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
303
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
304 char *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
305 msn_message_gen_payload(MsnMessage *msg, size_t *ret_size)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
306 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
307 GList *l;
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
308 char *n, *base, *end;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
309 int len;
19936
4e02485ca561 Silence the warning that body_len might be used uninitialized in msn_message_gen_payload().
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
310 size_t body_len = 0;
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
311 const void *body;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
312
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
313 g_return_val_if_fail(msg != NULL, NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
314
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
315 len = MSN_BUF_LEN;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
316
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
317 base = n = end = g_malloc(len + 1);
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
318 end += len;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
319
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
320 /* Standard header. */
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
321 if (msg->charset == NULL)
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
322 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
323 g_snprintf(n, len,
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
324 "MIME-Version: 1.0\r\n"
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
325 "Content-Type: %s\r\n",
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
326 msg->content_type);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
327 }
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
328 else
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
329 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
330 g_snprintf(n, len,
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
331 "MIME-Version: 1.0\r\n"
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
332 "Content-Type: %s; charset=%s\r\n",
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
333 msg->content_type, msg->charset);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
334 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
335
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
336 n += strlen(n);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
337
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
338 for (l = msg->header_list; l != NULL; l = l->next)
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
339 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
340 const char *key;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
341 const char *value;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
342
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
343 key = l->data;
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
344 value = msn_message_get_header_value(msg, key);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
345
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
346 g_snprintf(n, end - n, "%s: %s\r\n", key, value);
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
347 n += strlen(n);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
348 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
349
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
350 n += g_strlcpy(n, "\r\n", end - n);
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
351
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
352 body = msn_message_get_bin_data(msg, &body_len);
6827
df4411142ece [gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents: 6826
diff changeset
353
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
354 if (msg->msnslp_message)
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
355 {
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
356 size_t siz;
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
357 char *body;
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
358
31003
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
359 body = msn_slpmsgpart_serialize(msg->part, &siz);
30987
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
360
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
361 memcpy(n, body, siz);
5d18cc98412b Use slp parse code that was just moved to SlpMessage since it belongs there
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30977
diff changeset
362 n += siz;
31136
643ef83b4c67 Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31107
diff changeset
363
643ef83b4c67 Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31107
diff changeset
364 g_free(body);
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
365 }
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
366 else
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 6181
diff changeset
367 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
368 if (body != NULL)
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
369 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
370 memcpy(n, body, body_len);
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
371 n += body_len;
13890
a3fa24a63d1b [gaim-migrate @ 17006]
Ma Yuan <mayuan2006@gmail.com>
parents: 13886
diff changeset
372 *n = '\0';
6800
8f99c220b503 [gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents: 6786
diff changeset
373 }
5310
ac2ee6a1f846 [gaim-migrate @ 5682]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
374 }
ac2ee6a1f846 [gaim-migrate @ 5682]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
375
6826
986589449e69 [gaim-migrate @ 7371]
Christian Hammond <chipx86@chipx86.com>
parents: 6800
diff changeset
376 if (ret_size != NULL)
9092
34b9e78827f6 [gaim-migrate @ 9869]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8647
diff changeset
377 {
10274
f329b1d7fd43 [gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10225
diff changeset
378 *ret_size = n - base;
f329b1d7fd43 [gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10225
diff changeset
379
9092
34b9e78827f6 [gaim-migrate @ 9869]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8647
diff changeset
380 if (*ret_size > 1664)
34b9e78827f6 [gaim-migrate @ 9869]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8647
diff changeset
381 *ret_size = 1664;
34b9e78827f6 [gaim-migrate @ 9869]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8647
diff changeset
382 }
34b9e78827f6 [gaim-migrate @ 9869]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8647
diff changeset
383
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
384 return base;
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
387 void
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
388 msn_message_set_flag(MsnMessage *msg, char flag)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
389 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
390 g_return_if_fail(msg != NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
391 g_return_if_fail(flag != 0);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
392
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
393 msg->flag = flag;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
394 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
395
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
396 char
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
397 msn_message_get_flag(const MsnMessage *msg)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
398 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
399 g_return_val_if_fail(msg != NULL, 0);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
400
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
401 return msg->flag;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
402 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
403
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
404 void
6868
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
405 msn_message_set_bin_data(MsnMessage *msg, const void *data, size_t len)
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
406 {
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
407 g_return_if_fail(msg != NULL);
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
408
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
409 /* There is no need to waste memory on data we cannot send anyway */
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
410 if (len > 1664)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
411 len = 1664;
6868
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
412
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
413 if (msg->body != NULL)
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
414 g_free(msg->body);
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
415
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
416 if (data != NULL && len > 0)
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
417 {
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
418 msg->body = g_malloc(len + 1);
11235
7e1cd737137b [gaim-migrate @ 13380]
Federico G. Schwindt <fgsch@lodoss.net>
parents: 11001
diff changeset
419 memcpy(msg->body, data, len);
24608
9f21d921daaf It should be more efficient to just use g_mallc() and then manually
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
420 msg->body[len] = '\0';
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
421 msg->body_len = len;
6868
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
422 }
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
423 else
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
424 {
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
425 msg->body = NULL;
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
426 msg->body_len = 0;
6868
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
427 }
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
428 }
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
429
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
430 const void *
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
431 msn_message_get_bin_data(const MsnMessage *msg, size_t *len)
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
432 {
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
433 g_return_val_if_fail(msg != NULL, NULL);
b9cc0730e11c [gaim-migrate @ 7414]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
434
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
435 if (len)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
436 *len = msg->body_len;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
437
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
438 return msg->body;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
439 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
440
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
441 void
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
442 msn_message_set_content_type(MsnMessage *msg, const char *type)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
443 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
444 g_return_if_fail(msg != NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
445
21067
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
446 g_free(msg->content_type);
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
447 msg->content_type = g_strdup(type);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
448 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
449
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
450 const char *
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
451 msn_message_get_content_type(const MsnMessage *msg)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
452 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
453 g_return_val_if_fail(msg != NULL, NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
454
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
455 return msg->content_type;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
456 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
457
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
458 void
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
459 msn_message_set_charset(MsnMessage *msg, const char *charset)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
460 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
461 g_return_if_fail(msg != NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
462
21067
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
463 g_free(msg->charset);
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21065
diff changeset
464 msg->charset = g_strdup(charset);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
465 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
466
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
467 const char *
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
468 msn_message_get_charset(const MsnMessage *msg)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
469 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
470 g_return_val_if_fail(msg != NULL, NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
471
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
472 return msg->charset;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
473 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
474
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
475 void
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
476 msn_message_set_header(MsnMessage *msg, const char *name, const char *value)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
477 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
478 const char *temp;
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
479 char *new_name;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
480
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
481 g_return_if_fail(msg != NULL);
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
482 g_return_if_fail(name != NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
483
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
484 temp = msn_message_get_header_value(msg, name);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
485
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
486 if (value == NULL)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
487 {
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
488 if (temp != NULL)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
489 {
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
490 GList *l;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
491
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
492 for (l = msg->header_list; l != NULL; l = l->next)
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
493 {
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
494 if (!g_ascii_strcasecmp(l->data, name))
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
495 {
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
496 msg->header_list = g_list_remove(msg->header_list, l->data);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
497
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
498 break;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
499 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
500 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
501
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
502 g_hash_table_remove(msg->header_table, name);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
503 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
504
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
505 return;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
506 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
507
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
508 new_name = g_strdup(name);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
509
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
510 g_hash_table_insert(msg->header_table, new_name, g_strdup(value));
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
511
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
512 if (temp == NULL)
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
513 msg->header_list = g_list_append(msg->header_list, new_name);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
514 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
515
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
516 const char *
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
517 msn_message_get_header_value(const MsnMessage *msg, const char *name)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
518 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
519 g_return_val_if_fail(msg != NULL, NULL);
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
520 g_return_val_if_fail(name != NULL, NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
521
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
522 return g_hash_table_lookup(msg->header_table, name);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
523 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
524
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
525 GHashTable *
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
526 msn_message_get_hashtable_from_body(const MsnMessage *msg)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
527 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
528 GHashTable *table;
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
529 size_t body_len;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
530 const char *body;
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
531 char **elems, **cur, **tokens, *body_str;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
532
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
533 g_return_val_if_fail(msg != NULL, NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
534
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
535 table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
536
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
537 body = msn_message_get_bin_data(msg, &body_len);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
538
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
539 g_return_val_if_fail(body != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
540
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
541 body_str = g_strndup(body, body_len);
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
542 elems = g_strsplit(body_str, "\r\n", 0);
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10275
diff changeset
543 g_free(body_str);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
544
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
545 for (cur = elems; *cur != NULL; cur++)
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
546 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
547 if (**cur == '\0')
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
548 break;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
549
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
550 tokens = g_strsplit(*cur, ": ", 2);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
551
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20600
diff changeset
552 if (tokens[0] != NULL && tokens[1] != NULL) {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
553 g_hash_table_insert(table, tokens[0], tokens[1]);
21010
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20600
diff changeset
554 g_free(tokens);
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20600
diff changeset
555 } else
2bd8577a08e5 Fix some leaks.
Daniel Atallah <datallah@pidgin.im>
parents: 20600
diff changeset
556 g_strfreev(tokens);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
557 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
558
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
559 g_strfreev(elems);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
560
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
561 return table;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
562 }
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
563
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
564 char *
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
565 msn_message_to_string(MsnMessage *msg)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
566 {
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
567 size_t body_len;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
568 const char *body;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
569
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
570 g_return_val_if_fail(msg != NULL, NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
571 g_return_val_if_fail(msg->type == MSN_MSG_TEXT, NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
572
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
573 body = msn_message_get_bin_data(msg, &body_len);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
574
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
575 return g_strndup(body, body_len);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
576 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
577
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
578 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
579 msn_message_show_readable(MsnMessage *msg, const char *info,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
580 gboolean text_body)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
581 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
582 GString *str;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
583 size_t body_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
584 const char *body;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
585 GList *l;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
586
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
587 g_return_if_fail(msg != NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
588
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
589 str = g_string_new(NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
590
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
591 /* Standard header. */
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
592 if (msg->charset == NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
593 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
594 g_string_append_printf(str,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
595 "MIME-Version: 1.0\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
596 "Content-Type: %s\r\n",
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
597 msg->content_type);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
598 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
599 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
600 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
601 g_string_append_printf(str,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
602 "MIME-Version: 1.0\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
603 "Content-Type: %s; charset=%s\r\n",
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
604 msg->content_type, msg->charset);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
605 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
606
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
607 for (l = msg->header_list; l; l = l->next)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
608 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
609 char *key;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
610 const char *value;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
611
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
612 key = l->data;
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
613 value = msn_message_get_header_value(msg, key);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
614
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
615 g_string_append_printf(str, "%s: %s\r\n", key, value);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
616 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
617
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
618 g_string_append(str, "\r\n");
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
619
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
620 body = msn_message_get_bin_data(msg, &body_len);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
621
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
622 if (msg->msnslp_message)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
623 {
31003
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
624 g_string_append_printf(str, "Session ID: %u\r\n", msg->part->header->session_id);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
625 g_string_append_printf(str, "ID: %u\r\n", msg->part->header->id);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
626 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", msg->part->header->offset);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
627 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", msg->part->header->total_size);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
628 g_string_append_printf(str, "Length: %u\r\n", msg->part->header->length);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
629 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->part->header->flags);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
630 g_string_append_printf(str, "ACK ID: %u\r\n", msg->part->header->ack_id);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
631 g_string_append_printf(str, "SUB ID: %u\r\n", msg->part->header->ack_sub_id);
1ad38210ec4d Migrate MsnMessage code to use Parts instead of the whole SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30989
diff changeset
632 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->part->header->ack_size);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
633
27770
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27691
diff changeset
634 if (purple_debug_is_verbose() && body != NULL)
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9092
diff changeset
635 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
636 if (text_body)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
637 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
638 g_string_append_len(str, body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
639 if (body[body_len - 1] == '\0')
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
640 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
641 str->len--;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
642 g_string_append(str, " 0x00");
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
643 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
644 g_string_append(str, "\r\n");
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
645 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
646 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
647 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
648 int i;
31047
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
649 int bin_len;
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
650
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
651 if (msg->part->footer->value == P2P_APPID_SESION)
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
652 bin_len = P2P_PACKET_HEADER_SIZE;
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
653 else
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
654 bin_len = body_len;
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
655
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
656 for (i = 0; i < bin_len; i++)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
657 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
658 g_string_append_printf(str, "%.2hhX ", body[i]);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
659 if ((i % 16) == 15)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
660 g_string_append(str, "\r\n");
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
661 }
31047
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
662
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
663 if (bin_len == P2P_PACKET_HEADER_SIZE)
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
664 g_string_append_printf(str, "%s ", body + P2P_PACKET_HEADER_SIZE);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
665 g_string_append(str, "\r\n");
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
666 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
667 }
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
668
31047
a6fad6ce0fbc Print SLP data as text if it's a negociating session message.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31023
diff changeset
669 g_string_append_printf(str, "Footer: 0x%08X\r\n", msg->part->footer->value);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
670 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
671 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
672 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
673 if (body != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
674 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
675 g_string_append_len(str, body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
676 g_string_append(str, "\r\n");
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
677 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
678 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
679
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
680 purple_debug_info("msn", "Message %s:\n{%s}\n", info, str->str);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
681
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
682 g_string_free(str, TRUE);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
683 }
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
684
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
685 /**************************************************************************
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
686 * Message Handlers
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
687 **************************************************************************/
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
688 void
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
689 msn_plain_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
690 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
691 PurpleConnection *gc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
692 const char *body;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
693 char *body_enc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
694 char *body_final;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
695 size_t body_len;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
696 const char *passport;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
697 const char *value;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
698
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
699 gc = cmdproc->session->account->gc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
700
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
701 body = msn_message_get_bin_data(msg, &body_len);
29462
49853c4082d3 I don't believe there's any reason to duplicate this string.
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
702 body_enc = g_markup_escape_text(body, body_len);
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
703
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
704 passport = msg->remote_user;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
705
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
706 if (!strcmp(passport, "messenger@microsoft.com") &&
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
707 strstr(body, "immediate security update"))
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
708 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
709 return;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
710 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
711
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
712 #if 0
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
713 if ((value = msn_message_get_header_value(msg, "User-Agent")) != NULL)
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
714 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
715 purple_debug_misc("msn", "User-Agent = '%s'\n", value);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
716 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
717 #endif
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
718
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
719 if ((value = msn_message_get_header_value(msg, "X-MMS-IM-Format")) != NULL)
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
720 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
721 char *pre, *post;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
722
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
723 msn_parse_format(value, &pre, &post);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
724
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
725 body_final = g_strdup_printf("%s%s%s", pre ? pre : "",
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
726 body_enc ? body_enc : "", post ? post : "");
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
727
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
728 g_free(pre);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
729 g_free(post);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
730 g_free(body_enc);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
731 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
732 else
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
733 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
734 body_final = body_enc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
735 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
736
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
737 if (cmdproc->servconn->type == MSN_SERVCONN_SB) {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
738 MsnSwitchBoard *swboard = cmdproc->data;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
739
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
740 swboard->flag |= MSN_SB_FLAG_IM;
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
741
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
742 if (swboard->current_users > 1 ||
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
743 ((swboard->conv != NULL) &&
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
744 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
745 {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
746 /* If current_users is always ok as it should then there is no need to
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
747 * check if this is a chat. */
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
748 if (swboard->current_users <= 1)
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
749 purple_debug_misc("msn", "plain_msg: current_users(%d)\n",
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
750 swboard->current_users);
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
751
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
752 serv_got_chat_in(gc, swboard->chat_id, passport, 0, body_final,
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
753 time(NULL));
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
754 if (swboard->conv == NULL)
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
755 {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
756 swboard->conv = purple_find_chat(gc, swboard->chat_id);
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
757 swboard->flag |= MSN_SB_FLAG_IM;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
758 }
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
759 }
30939
f3f4e9b1b6cc Don't treat messages got from ourself from a switchboard like a new message. This fixes the multiple conversation open with ourself.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30929
diff changeset
760 else if (!g_str_equal(passport, purple_account_get_username(gc->account)))
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
761 {
30939
f3f4e9b1b6cc Don't treat messages got from ourself from a switchboard like a new message. This fixes the multiple conversation open with ourself.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30929
diff changeset
762 /* Don't im ourselves ... */
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
763 serv_got_im(gc, passport, body_final, 0, time(NULL));
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
764 if (swboard->conv == NULL)
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
765 {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
766 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
767 passport, purple_connection_get_account(gc));
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
768 swboard->flag |= MSN_SB_FLAG_IM;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
769 }
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
770 }
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
771
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
772 } else {
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
773 serv_got_im(gc, passport, body_final, 0, time(NULL));
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
774 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
775
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
776 g_free(body_final);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
777 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
778
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
779 void
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
780 msn_control_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
781 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
782 PurpleConnection *gc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
783 char *passport;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
784
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
785 gc = cmdproc->session->account->gc;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
786 passport = msg->remote_user;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
787
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 28146
diff changeset
788 if (msn_message_get_header_value(msg, "TypingUser") == NULL)
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
789 return;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
790
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
791 if (cmdproc->servconn->type == MSN_SERVCONN_SB) {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
792 MsnSwitchBoard *swboard = cmdproc->data;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
793
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
794 if (swboard->current_users == 1)
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
795 {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
796 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT,
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
797 PURPLE_TYPING);
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
798 }
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
799
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
800 } else {
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
801 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT,
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
802 PURPLE_TYPING);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
803 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
804 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
805
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
806 static void
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
807 datacast_inform_user(MsnSwitchBoard *swboard, const char *who,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
808 const char *msg, const char *filename)
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
809 {
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
810 char *username, *str;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
811 PurpleAccount *account;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
812 PurpleBuddy *b;
30200
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
813 PurpleConnection *pc;
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
814 gboolean chat;
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
815
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
816 account = swboard->session->account;
30200
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
817 pc = purple_account_get_connection(account);
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
818
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
819 if ((b = purple_find_buddy(account, who)) != NULL)
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
820 username = g_markup_escape_text(purple_buddy_get_alias(b), -1);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
821 else
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
822 username = g_markup_escape_text(who, -1);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
823 str = g_strdup_printf(msg, username, filename);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
824 g_free(username);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
825
30200
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
826 swboard->flag |= MSN_SB_FLAG_IM;
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
827 if (swboard->current_users > 1)
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
828 chat = TRUE;
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
829 else
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
830 chat = FALSE;
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
831
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
832 if (swboard->conv == NULL) {
30200
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
833 if (chat)
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
834 swboard->conv = purple_find_chat(account->gc, swboard->chat_id);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
835 else {
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
836 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
837 who, account);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
838 if (swboard->conv == NULL)
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
839 swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
840 }
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
841 }
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
842
30200
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
843 if (chat)
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
844 serv_got_chat_in(pc,
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
845 purple_conv_chat_get_id(PURPLE_CONV_CHAT(swboard->conv)),
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
846 who, PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM, str,
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
847 time(NULL));
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
848 else
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
849 serv_got_im(pc, who, str, PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM,
50c2380f3607 Use serv_got_im/serv_got_chat_in instead of purple_conversation_write so
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30064
diff changeset
850 time(NULL));
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
851 g_free(str);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
852
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
853 }
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
854
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
855 /* TODO: Make these not be such duplicates of each other */
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
856 static void
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
857 got_wink_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
858 {
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
859 FILE *f = NULL;
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
860 char *path = NULL;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
861 const char *who = slpcall->slplink->remote_user;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
862 purple_debug_info("msn", "Received wink from %s\n", who);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
863
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
864 if ((f = purple_mkstemp(&path, TRUE)) &&
30064
9e6f32b8ced9 Oops, make sure that check actually succeeds when it's supposed to.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30063
diff changeset
865 (fwrite(data, 1, size, f) == size)) {
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
866 datacast_inform_user(slpcall->slplink->swboard,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
867 who,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
868 _("%s sent a wink. <a href='msn-wink://%s'>Click here to play it</a>"),
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
869 path);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
870 } else {
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
871 purple_debug_error("msn", "Couldn\'t create temp file to store wink\n");
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
872 datacast_inform_user(slpcall->slplink->swboard,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
873 who,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
874 _("%s sent a wink, but it could not be saved"),
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
875 NULL);
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
876 }
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
877 if (f)
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
878 fclose(f);
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
879 g_free(path);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
880 }
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
881
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
882 static void
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
883 got_voiceclip_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
884 {
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
885 FILE *f = NULL;
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
886 char *path = NULL;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
887 const char *who = slpcall->slplink->remote_user;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
888 purple_debug_info("msn", "Received voice clip from %s\n", who);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
889
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
890 if ((f = purple_mkstemp(&path, TRUE)) &&
30064
9e6f32b8ced9 Oops, make sure that check actually succeeds when it's supposed to.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30063
diff changeset
891 (fwrite(data, 1, size, f) == size)) {
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
892 datacast_inform_user(slpcall->slplink->swboard,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
893 who,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
894 _("%s sent a voice clip. <a href='audio://%s'>Click here to play it</a>"),
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
895 path);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
896 } else {
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
897 purple_debug_error("msn", "Couldn\'t create temp file to store sound\n");
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
898 datacast_inform_user(slpcall->slplink->swboard,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
899 who,
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
900 _("%s sent a voice clip, but it could not be saved"),
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
901 NULL);
30063
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
902 }
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
903 if (f)
a42ac7c244c8 I'm tired of seeing this warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29485
diff changeset
904 fclose(f);
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
905 g_free(path);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
906 }
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
907
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
908 void
31014
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
909 msn_p2p_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
910 {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
911 MsnSession *session;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
912 MsnSlpLink *slplink;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
913
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
914 session = cmdproc->servconn->session;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
915 slplink = msn_session_get_slplink(session, msg->remote_user);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
916
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
917 if (slplink->swboard == NULL)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
918 {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
919 /*
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
920 * We will need swboard in order to change its flags. If its
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
921 * NULL, something has probably gone wrong earlier on. I
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
922 * didn't want to do this, but MSN 7 is somehow causing us
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
923 * to crash here, I couldn't reproduce it to debug more,
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
924 * and people are reporting bugs. Hopefully this doesn't
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
925 * cause more crashes. Stu.
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
926 */
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
927 if (cmdproc->data == NULL)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
928 g_warning("msn_p2p_msg cmdproc->data was NULL\n");
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
929 else {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
930 slplink->swboard = (MsnSwitchBoard *)cmdproc->data;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
931 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
932 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
933 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
934
31048
c1c808ee9023 Set the correct length of the data before calling the function to process it.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31047
diff changeset
935 if (msg->part) {
31060
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31052
diff changeset
936 msn_slplink_process_msg(slplink, msg->part);
31048
c1c808ee9023 Set the correct length of the data before calling the function to process it.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31047
diff changeset
937 }
31022
9440e2930057 Prevent a crash, this should never happen. It needs a little more work before being fixed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31014
diff changeset
938 else /* This should never happen. */
9440e2930057 Prevent a crash, this should never happen. It needs a little more work before being fixed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31014
diff changeset
939 purple_debug_fatal("msn", "P2P message without a Part.\n");
31014
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
940 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
941
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
942 static void
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
943 got_emoticon(MsnSlpCall *slpcall,
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
944 const guchar *data, gsize size)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
945 {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
946 PurpleConversation *conv;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
947 MsnSwitchBoard *swboard;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
948
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
949 swboard = slpcall->slplink->swboard;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
950 conv = swboard->conv;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
951
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
952 if (conv) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
953 /* FIXME: it would be better if we wrote the data as we received it
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
954 instead of all at once, calling write multiple times and
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
955 close once at the very end
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
956 */
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
957 purple_conv_custom_smiley_write(conv, slpcall->data_info, data, size);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
958 purple_conv_custom_smiley_close(conv, slpcall->data_info );
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
959 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
960 if (purple_debug_is_verbose())
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
961 purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
962 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
963
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
964 void msn_emoticon_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
965 {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
966 MsnSession *session;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
967 MsnSlpLink *slplink;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
968 MsnSwitchBoard *swboard;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
969 MsnObject *obj;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
970 char **tokens;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
971 char *smile, *body_str;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
972 const char *body, *who, *sha1;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
973 guint tok;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
974 size_t body_len;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
975
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
976 PurpleConversation *conv;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
977
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
978 session = cmdproc->servconn->session;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
979
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
980 if (!purple_account_get_bool(session->account, "custom_smileys", TRUE))
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
981 return;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
982
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
983 swboard = cmdproc->data;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
984 conv = swboard->conv;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
985
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
986 body = msn_message_get_bin_data(msg, &body_len);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
987 if (!body || !body_len)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
988 return;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
989 body_str = g_strndup(body, body_len);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
990
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
991 /* MSN Messenger 7 may send more than one MSNObject in a single message...
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
992 * Maybe 10 tokens is a reasonable max value. */
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
993 tokens = g_strsplit(body_str, "\t", 10);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
994
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
995 g_free(body_str);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
996
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
997 for (tok = 0; tok < 9; tok += 2) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
998 if (tokens[tok] == NULL || tokens[tok + 1] == NULL) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
999 break;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1000 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1001
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1002 smile = tokens[tok];
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1003 obj = msn_object_new_from_string(purple_url_decode(tokens[tok + 1]));
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1004
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1005 if (obj == NULL)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1006 break;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1007
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1008 who = msn_object_get_creator(obj);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1009 sha1 = msn_object_get_sha1(obj);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1010
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1011 slplink = msn_session_get_slplink(session, who);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1012 if (slplink->swboard != swboard) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1013 if (slplink->swboard != NULL)
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1014 /*
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1015 * Apparently we're using a different switchboard now or
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1016 * something? I don't know if this is normal, but it
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1017 * definitely happens. So make sure the old switchboard
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1018 * doesn't still have a reference to us.
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1019 */
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1020 slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1021 slplink->swboard = swboard;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1022 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1023 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1024
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1025 /* If the conversation doesn't exist then this is a custom smiley
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1026 * used in the first message in a MSN conversation: we need to create
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1027 * the conversation now, otherwise the custom smiley won't be shown.
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1028 * This happens because every GtkIMHtml has its own smiley tree: if
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1029 * the conversation doesn't exist then we cannot associate the new
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1030 * smiley with its GtkIMHtml widget. */
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1031 if (!conv) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1032 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, who);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1033 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1034
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1035 if (purple_conv_custom_smiley_add(conv, smile, "sha1", sha1, TRUE)) {
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1036 msn_slplink_request_object(slplink, smile, got_emoticon, NULL, obj);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1037 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1038
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1039 msn_object_destroy(obj);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1040 obj = NULL;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1041 who = NULL;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1042 sha1 = NULL;
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1043 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1044 g_strfreev(tokens);
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1045 }
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1046
3a5550f5ab47 Move MsnMessage callbacks to msn.c instead of polluting everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31003
diff changeset
1047 void
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1048 msn_datacast_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1049 {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1050 GHashTable *body;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1051 const char *id;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1052 body = msn_message_get_hashtable_from_body(msg);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1053
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1054 id = g_hash_table_lookup(body, "ID");
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1055
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1056 if (!strcmp(id, "1")) {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1057 /* Nudge */
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1058 PurpleAccount *account;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1059 const char *user;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1060
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1061 account = cmdproc->session->account;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1062 user = msg->remote_user;
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1063
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1064 if (cmdproc->servconn->type == MSN_SERVCONN_SB) {
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1065 MsnSwitchBoard *swboard = cmdproc->data;
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1066 if (swboard->current_users > 1 ||
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1067 ((swboard->conv != NULL) &&
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1068 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1069 purple_prpl_got_attention_in_chat(account->gc, swboard->chat_id, user, MSN_NUDGE);
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1070
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1071 else
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1072 purple_prpl_got_attention(account->gc, user, MSN_NUDGE);
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1073 } else {
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1074 purple_prpl_got_attention(account->gc, user, MSN_NUDGE);
25539
855cf59c9b6f Make message handlers more generic and able to work when used by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
1075 }
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1076
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1077 } else if (!strcmp(id, "2")) {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1078 /* Wink */
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1079 MsnSession *session;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1080 MsnSlpLink *slplink;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1081 MsnObject *obj;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1082 const char *who;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1083 const char *data;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1084
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1085 session = cmdproc->session;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1086
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1087 data = g_hash_table_lookup(body, "Data");
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1088 obj = msn_object_new_from_string(data);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1089 who = msn_object_get_creator(obj);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1090
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1091 slplink = msn_session_get_slplink(session, who);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1092 msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1093
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1094 msn_object_destroy(obj);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1095
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1096
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1097 } else if (!strcmp(id, "3")) {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1098 /* Voiceclip */
27690
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1099 MsnSession *session;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1100 MsnSlpLink *slplink;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1101 MsnObject *obj;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1102 const char *who;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1103 const char *data;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1104
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1105 session = cmdproc->session;
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1106
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1107 data = g_hash_table_lookup(body, "Data");
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1108 obj = msn_object_new_from_string(data);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1109 who = msn_object_get_creator(obj);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1110
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1111 slplink = msn_session_get_slplink(session, who);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1112 msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj);
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1113
c84c192f7a9e Add support for receiving winks and audio clips on MSN. The resulting file
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
1114 msn_object_destroy(obj);
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1115
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1116 } else if (!strcmp(id, "4")) {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1117 /* Action */
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1118
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1119 } else {
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1120 purple_debug_warning("msn", "Got unknown datacast with ID %s.\n", id);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1121 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1122
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1123 g_hash_table_destroy(body);
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1124 }
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25417
diff changeset
1125
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1126 void
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1127 msn_invite_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1128 {
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1129 GHashTable *body;
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1130 const gchar *command;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1131 const gchar *cookie;
28146
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1132 gboolean accepted = FALSE;
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1133
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1134 g_return_if_fail(cmdproc != NULL);
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1135 g_return_if_fail(msg != NULL);
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1136
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1137 body = msn_message_get_hashtable_from_body(msg);
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1138
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1139 if (body == NULL) {
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1140 purple_debug_warning("msn",
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1141 "Unable to parse invite msg body.\n");
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1142 return;
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1143 }
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1144
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1145 /*
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1146 * GUID is NOT always present but Invitation-Command and Invitation-Cookie
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1147 * are mandatory.
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1148 */
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1149 command = g_hash_table_lookup(body, "Invitation-Command");
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1150 cookie = g_hash_table_lookup(body, "Invitation-Cookie");
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1151
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1152 if (command == NULL || cookie == NULL) {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1153 purple_debug_warning("msn",
30079
d91306baf541 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
1154 "Invalid invitation message: either Invitation-Command "
d91306baf541 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
1155 "or Invitation-Cookie is missing or invalid.\n"
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1156 );
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1157 return;
28146
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1158
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1159 } else if (!strcmp(command, "INVITE")) {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1160 const gchar *guid = g_hash_table_lookup(body, "Application-GUID");
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1161
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1162 if (guid == NULL) {
30317
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1163 purple_debug_warning("msn",
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1164 "Invite msg missing Application-GUID.\n");
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1165
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1166 accepted = TRUE;
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1167
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1168 } else if (!strcmp(guid, MSN_FT_GUID)) {
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1169
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1170 } else if (!strcmp(guid, "{02D3C01F-BF30-4825-A83A-DE7AF41648AA}")) {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1171 purple_debug_info("msn", "Computer call\n");
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1172
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1173 if (cmdproc->session) {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1174 PurpleConversation *conv = NULL;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1175 gchar *from = msg->remote_user;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1176 gchar *buf = NULL;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1177
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1178 if (from)
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1179 conv = purple_find_conversation_with_account(
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1180 PURPLE_CONV_TYPE_IM, from,
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1181 cmdproc->session->account);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1182 if (conv)
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1183 buf = g_strdup_printf(
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1184 _("%s sent you a voice chat "
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1185 "invite, which is not yet "
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1186 "supported."), from);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1187 if (buf) {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1188 purple_conversation_write(conv, NULL, buf,
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1189 PURPLE_MESSAGE_SYSTEM |
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1190 PURPLE_MESSAGE_NOTIFY,
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1191 time(NULL));
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1192 g_free(buf);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1193 }
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1194 }
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1195 } else {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1196 const gchar *application = g_hash_table_lookup(body, "Application-Name");
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1197 purple_debug_warning("msn", "Unhandled invite msg with GUID %s: %s.\n",
30079
d91306baf541 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
1198 guid, application ? application : "(null)");
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1199 }
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1200
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1201 if (!accepted) {
28146
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1202 MsnSwitchBoard *swboard = cmdproc->data;
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1203 char *text;
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1204 MsnMessage *cancel;
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1205
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1206 cancel = msn_message_new(MSN_MSG_TEXT);
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1207 msn_message_set_content_type(cancel, "text/x-msmsgsinvite");
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1208 msn_message_set_charset(cancel, "UTF-8");
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1209 msn_message_set_flag(cancel, 'U');
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1210
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1211 text = g_strdup_printf("Invitation-Command: CANCEL\r\n"
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1212 "Invitation-Cookie: %s\r\n"
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1213 "Cancel-Code: REJECT_NOT_INSTALLED\r\n",
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1214 cookie);
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1215 msn_message_set_bin_data(cancel, text, strlen(text));
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1216 g_free(text);
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1217
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1218 msn_switchboard_send_msg(swboard, cancel, TRUE);
31162
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
1219 msn_message_unref(cancel);
28146
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1220 }
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1221
30317
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1222 } else if (!strcmp(command, "CANCEL")) {
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1223 const gchar *code = g_hash_table_lookup(body, "Cancel-Code");
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1224 purple_debug_info("msn", "MSMSGS invitation cancelled: %s.\n",
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1225 code ? code : "no reason given");
279a047f1fc8 Wait, command can't be both INVITE and CANCEL at the same time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30216
diff changeset
1226
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1227 } else {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1228 /*
30079
d91306baf541 More minor fixes. Spelling, extra variables, etc.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
1229 * Some other already established invitation session.
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1230 * Can be retrieved by Invitation-Cookie.
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29485
diff changeset
1231 */
28146
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1232 }
796c252c735e Send a cancel message for any unknown text/x-msmsgsinvite requests, so that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28145
diff changeset
1233
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1234 g_hash_table_destroy(body);
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1235 }
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 25617
diff changeset
1236
27569
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1237 /* Only called from chats. Handwritten messages for IMs come as a SLP message */
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1238 void
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1239 msn_handwritten_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1240 {
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1241 const char *body;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1242 size_t body_len;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1243
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1244 body = msn_message_get_bin_data(msg, &body_len);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1245 msn_switchboard_show_ink(cmdproc->data, msg->remote_user, body);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1246 }
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1247

mercurial