Mercurial > pidgin
comparison libpurple/protocols/msn/msg.c @ 30785:64e2fe53acc2
Use slp parse code that was just moved to SlpMessage since it belongs there
instead of the one in MsnMessage (the code was just moved).
Also, a little bit more drop of MsnMessage header and footer
(this is in the same commit because It's not possible to split changes in
the same file).
author | masca@cpw.pidgin.im |
---|---|
date | Tue, 08 Jun 2010 21:32:12 +0000 |
parents | fbb44d46c7a6 |
children | 155db1253acf |
comparison
equal
deleted
inserted
replaced
30784:320c0852b5cc | 30785:64e2fe53acc2 |
---|---|
26 #include "debug.h" | 26 #include "debug.h" |
27 | 27 |
28 #include "msn.h" | 28 #include "msn.h" |
29 #include "msg.h" | 29 #include "msg.h" |
30 #include "msnutils.h" | 30 #include "msnutils.h" |
31 #include "p2p.h" | 31 #include "slpmsg.h" |
32 | 32 |
33 MsnMessage * | 33 MsnMessage * |
34 msn_message_new(MsnMsgType type) | 34 msn_message_new(MsnMsgType type) |
35 { | 35 { |
36 MsnMessage *msg; | 36 MsnMessage *msg; |
159 msn_message_set_bin_data(msg, "ID: 1\r\n", 7); | 159 msn_message_set_bin_data(msg, "ID: 1\r\n", 7); |
160 | 160 |
161 return msg; | 161 return msg; |
162 } | 162 } |
163 | 163 |
164 #if 0 | |
164 void | 165 void |
165 msn_message_parse_slp_body(MsnMessage *msg, const char *body, size_t len) | 166 msn_message_parse_slp_body(MsnMessage *msg, const char *body, size_t len) |
166 { | 167 { |
167 MsnP2PHeader *header; | 168 MsnP2PHeader *header; |
168 MsnP2PHeader wire; | 169 MsnP2PHeader wire; |
195 memcpy(msg->body, tmp, msg->body_len); | 196 memcpy(msg->body, tmp, msg->body_len); |
196 msg->body[msg->body_len] = '\0'; | 197 msg->body[msg->body_len] = '\0'; |
197 tmp += body_len; | 198 tmp += body_len; |
198 } | 199 } |
199 } | 200 } |
201 #endif | |
200 | 202 |
201 void | 203 void |
202 msn_message_parse_payload(MsnMessage *msg, | 204 msn_message_parse_payload(MsnMessage *msg, |
203 const char *payload, size_t payload_len, | 205 const char *payload, size_t payload_len, |
204 const char *line_dem,const char *body_dem) | 206 const char *line_dem,const char *body_dem) |
292 | 294 |
293 /* Now we *should* be at the body. */ | 295 /* Now we *should* be at the body. */ |
294 content_type = msn_message_get_content_type(msg); | 296 content_type = msn_message_get_content_type(msg); |
295 | 297 |
296 if (content_type != NULL && | 298 if (content_type != NULL && |
297 !strcmp(content_type, "application/x-msnmsgrp2p")) | 299 !strcmp(content_type, "application/x-msnmsgrp2p")) { |
300 msg->msnslp_message = TRUE; | |
301 msg->slpmsg = msn_slpmsg_new_from_data(tmp, payload_len - (tmp - tmp_base)); | |
302 } | |
303 | |
304 #if 0 | |
298 { | 305 { |
299 MsnP2PHeader *header; | 306 MsnP2PHeader *header; |
300 MsnP2PHeader wire; | 307 MsnP2PHeader wire; |
301 MsnP2PFooter footer; | 308 MsnP2PFooter footer; |
302 int body_len; | 309 int body_len; |
337 msg->msnslp_footer.value = GUINT32_FROM_BE(footer.value); | 344 msg->msnslp_footer.value = GUINT32_FROM_BE(footer.value); |
338 } | 345 } |
339 } | 346 } |
340 else | 347 else |
341 { | 348 { |
349 #endif | |
342 if (payload_len - (tmp - tmp_base) > 0) { | 350 if (payload_len - (tmp - tmp_base) > 0) { |
343 msg->body_len = payload_len - (tmp - tmp_base); | 351 msg->body_len = payload_len - (tmp - tmp_base); |
344 g_free(msg->body); | 352 g_free(msg->body); |
345 msg->body = g_malloc(msg->body_len + 1); | 353 msg->body = g_malloc(msg->body_len + 1); |
346 memcpy(msg->body, tmp, msg->body_len); | 354 memcpy(msg->body, tmp, msg->body_len); |
353 "ISO-8859-1", NULL, &msg->body_len, NULL); | 361 "ISO-8859-1", NULL, &msg->body_len, NULL); |
354 g_free(msg->body); | 362 g_free(msg->body); |
355 msg->body = body; | 363 msg->body = body; |
356 msg->charset = g_strdup("UTF-8"); | 364 msg->charset = g_strdup("UTF-8"); |
357 } | 365 } |
358 } | 366 #if 0 |
367 } | |
368 #endif | |
359 | 369 |
360 g_free(tmp_base); | 370 g_free(tmp_base); |
361 } | 371 } |
362 | 372 |
363 MsnMessage * | 373 MsnMessage * |
377 } | 387 } |
378 | 388 |
379 char * | 389 char * |
380 msn_message_gen_slp_body(MsnMessage *msg, size_t *ret_size) | 390 msn_message_gen_slp_body(MsnMessage *msg, size_t *ret_size) |
381 { | 391 { |
392 #if 0 | |
382 MsnP2PHeader *header; | 393 MsnP2PHeader *header; |
383 | 394 |
384 char *tmp, *base; | 395 char *tmp, *base; |
385 const void *body; | 396 const void *body; |
386 size_t len, body_len; | 397 size_t len, body_len; |
408 | 419 |
409 if (ret_size != NULL) | 420 if (ret_size != NULL) |
410 *ret_size = tmp - base; | 421 *ret_size = tmp - base; |
411 | 422 |
412 return base; | 423 return base; |
424 #endif | |
425 char *tmp; | |
426 | |
427 tmp = msn_slpmsg_serialize(msg->slpmsg, ret_size); | |
428 return tmp; | |
413 } | 429 } |
414 | 430 |
415 char * | 431 char * |
416 msn_message_gen_payload(MsnMessage *msg, size_t *ret_size) | 432 msn_message_gen_payload(MsnMessage *msg, size_t *ret_size) |
417 { | 433 { |
462 | 478 |
463 body = msn_message_get_bin_data(msg, &body_len); | 479 body = msn_message_get_bin_data(msg, &body_len); |
464 | 480 |
465 if (msg->msnslp_message) | 481 if (msg->msnslp_message) |
466 { | 482 { |
483 size_t siz; | |
484 char *body; | |
485 | |
486 body = msn_slpmsg_serialize(msg->slpmsg, &siz); | |
487 | |
488 memcpy(n, body, siz); | |
489 n += siz; | |
490 #if 0 | |
467 MsnP2PHeader *header; | 491 MsnP2PHeader *header; |
468 MsnP2PFooter footer; | 492 MsnP2PFooter footer; |
469 | 493 |
470 header = msn_p2p_header_to_wire(&(msg->msnslp_header)); | 494 header = msn_p2p_header_to_wire(&(msg->msnslp_header)); |
471 | 495 |
483 | 507 |
484 footer.value = GUINT32_TO_BE(msg->msnslp_footer.value); | 508 footer.value = GUINT32_TO_BE(msg->msnslp_footer.value); |
485 | 509 |
486 memcpy(n, &footer, 4); | 510 memcpy(n, &footer, 4); |
487 n += 4; | 511 n += 4; |
512 #endif | |
488 } | 513 } |
489 else | 514 else |
490 { | 515 { |
491 if (body != NULL) | 516 if (body != NULL) |
492 { | 517 { |
742 | 767 |
743 body = msn_message_get_bin_data(msg, &body_len); | 768 body = msn_message_get_bin_data(msg, &body_len); |
744 | 769 |
745 if (msg->msnslp_message) | 770 if (msg->msnslp_message) |
746 { | 771 { |
747 g_string_append_printf(str, "Session ID: %u\r\n", msg->msnslp_header.session_id); | 772 g_string_append_printf(str, "Session ID: %u\r\n", msg->slpmsg->header->session_id); |
748 g_string_append_printf(str, "ID: %u\r\n", msg->msnslp_header.id); | 773 g_string_append_printf(str, "ID: %u\r\n", msg->slpmsg->header->id); |
749 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.offset); | 774 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", msg->slpmsg->header->offset); |
750 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.total_size); | 775 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", msg->slpmsg->header->total_size); |
751 g_string_append_printf(str, "Length: %u\r\n", msg->msnslp_header.length); | 776 g_string_append_printf(str, "Length: %u\r\n", msg->slpmsg->header->length); |
752 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->msnslp_header.flags); | 777 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->slpmsg->header->flags); |
753 g_string_append_printf(str, "ACK ID: %u\r\n", msg->msnslp_header.ack_id); | 778 g_string_append_printf(str, "ACK ID: %u\r\n", msg->slpmsg->header->ack_id); |
754 g_string_append_printf(str, "SUB ID: %u\r\n", msg->msnslp_header.ack_sub_id); | 779 g_string_append_printf(str, "SUB ID: %u\r\n", msg->slpmsg->header->ack_sub_id); |
755 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.ack_size); | 780 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->slpmsg->header->ack_size); |
756 | 781 |
757 if (purple_debug_is_verbose() && body != NULL) | 782 if (purple_debug_is_verbose() && body != NULL) |
758 { | 783 { |
759 if (text_body) | 784 if (text_body) |
760 { | 785 { |
777 } | 802 } |
778 g_string_append(str, "\r\n"); | 803 g_string_append(str, "\r\n"); |
779 } | 804 } |
780 } | 805 } |
781 | 806 |
782 g_string_append_printf(str, "Footer: %u\r\n", msg->msnslp_footer.value); | 807 g_string_append_printf(str, "Footer: %u\r\n", msg->slpmsg->footer->value); |
783 } | 808 } |
784 else | 809 else |
785 { | 810 { |
786 if (body != NULL) | 811 if (body != NULL) |
787 { | 812 { |