comparison src/protocols/msn/msg.c @ 19784:bc30c6270d9f

[gaim-migrate @ 16473] add the Framework of SOAP request Now can retrieve the Contact via SOAP Request. so many bug still exist! commited by MaYuan<mayuan2006@gmail.com> committer: Ethan Blanton <elb@pidgin.im>
author Ma Yuan <mayuan2006@gmail.com>
date Sun, 09 Jul 2006 16:48:25 +0000
parents 5e2a365af01b
children 8b4653986e8e
comparison
equal deleted inserted replaced
19783:995aea35b05c 19784:bc30c6270d9f
229 } 229 }
230 *end = '\0'; 230 *end = '\0';
231 231
232 elems = g_strsplit(tmp, "\r\n", 0); 232 elems = g_strsplit(tmp, "\r\n", 0);
233 233
234 for (cur = elems; *cur != NULL; cur++) 234 for (cur = elems; *cur != NULL; cur++){
235 {
236 const char *key, *value; 235 const char *key, *value;
237 236
238 tokens = g_strsplit(*cur, ": ", 2); 237 tokens = g_strsplit(*cur, ": ", 2);
239 238
240 key = tokens[0]; 239 key = tokens[0];
241 value = tokens[1]; 240 value = tokens[1];
242 241
243 if (!strcmp(key, "MIME-Version")) 242 /*if not MIME content ,then return*/
244 { 243 if (!strcmp(key, "MIME-Version")){
245 g_strfreev(tokens); 244 g_strfreev(tokens);
246 continue; 245 continue;
247 } 246 }
248 247
249 if (!strcmp(key, "Content-Type")) 248 if (!strcmp(key, "Content-Type")){
250 {
251 char *charset, *c; 249 char *charset, *c;
252 250
253 if ((c = strchr(value, ';')) != NULL) 251 if ((c = strchr(value, ';')) != NULL){
254 { 252 if ((charset = strchr(c, '=')) != NULL) {
255 if ((charset = strchr(c, '=')) != NULL)
256 {
257 charset++; 253 charset++;
258 msn_message_set_charset(msg, charset); 254 msn_message_set_charset(msg, charset);
259 } 255 }
260 256
261 *c = '\0'; 257 *c = '\0';
262 } 258 }
263 259
264 msn_message_set_content_type(msg, value); 260 msn_message_set_content_type(msg, value);
265 } 261 }else{
266 else
267 {
268 msn_message_set_attr(msg, key, value); 262 msn_message_set_attr(msg, key, value);
269 } 263 }
270 264
271 g_strfreev(tokens); 265 g_strfreev(tokens);
272 } 266 }
278 272
279 /* Now we *should* be at the body. */ 273 /* Now we *should* be at the body. */
280 content_type = msn_message_get_content_type(msg); 274 content_type = msn_message_get_content_type(msg);
281 275
282 if (content_type != NULL && 276 if (content_type != NULL &&
283 !strcmp(content_type, "application/x-msnmsgrp2p")) 277 !strcmp(content_type, "application/x-msnmsgrp2p")){
284 {
285 MsnSlpHeader header; 278 MsnSlpHeader header;
286 MsnSlpFooter footer; 279 MsnSlpFooter footer;
287 int body_len; 280 int body_len;
288 281
289 if (payload_len - (tmp - tmp_base) < sizeof(header)) { 282 if (payload_len - (tmp - tmp_base) < sizeof(header)) {
321 if (body_len >= 0) { 314 if (body_len >= 0) {
322 memcpy(&footer, tmp, sizeof(footer)); 315 memcpy(&footer, tmp, sizeof(footer));
323 tmp += sizeof(footer); 316 tmp += sizeof(footer);
324 msg->msnslp_footer.value = GUINT32_FROM_BE(footer.value); 317 msg->msnslp_footer.value = GUINT32_FROM_BE(footer.value);
325 } 318 }
326 } 319 }else{
327 else
328 {
329 if (payload_len - (tmp - tmp_base) > 0) { 320 if (payload_len - (tmp - tmp_base) > 0) {
330 msg->body_len = payload_len - (tmp - tmp_base); 321 msg->body_len = payload_len - (tmp - tmp_base);
331 msg->body = g_malloc0(msg->body_len + 1); 322 msg->body = g_malloc0(msg->body_len + 1);
332 memcpy(msg->body, tmp, msg->body_len); 323 memcpy(msg->body, tmp, msg->body_len);
333 } 324 }
783 774
784 gaim_debug_info("msn", "Message %s:\n{%s}\n", info, str->str); 775 gaim_debug_info("msn", "Message %s:\n{%s}\n", info, str->str);
785 776
786 g_string_free(str, TRUE); 777 g_string_free(str, TRUE);
787 } 778 }
779