Mercurial > pidgin.yaz
comparison src/protocols/msn/msg.c @ 6800:8f228a7d5076
[gaim-migrate @ 7340]
Added what I have of MSNSLP in my tree. It's broken, and therefore
disabled, but I need to get this out so I can do other stuff too, and have
something to revert back to if I break something :)
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Wed, 10 Sep 2003 00:24:48 +0000 |
parents | 8efafdc38718 |
children | 2adf21e70601 |
comparison
equal
deleted
inserted
replaced
6799:fac483a95584 | 6800:8f228a7d5076 |
---|---|
67 | 67 |
68 return msg; | 68 return msg; |
69 } | 69 } |
70 | 70 |
71 MsnMessage * | 71 MsnMessage * |
72 msn_message_new_msnslp(void) | |
73 { | |
74 MsnMessage *msg; | |
75 | |
76 msg = msn_message_new(); | |
77 | |
78 msn_message_set_attr(msg, "User-Agent", NULL); | |
79 | |
80 msg->msnslp_message = TRUE; | |
81 msg->size += 52; | |
82 | |
83 return msg; | |
84 } | |
85 | |
86 MsnMessage * | |
72 msn_message_new_from_str(MsnSession *session, const char *str) | 87 msn_message_new_from_str(MsnSession *session, const char *str) |
73 { | 88 { |
74 MsnMessage *msg; | 89 MsnMessage *msg; |
75 char *tmp_base, *msg_base, *tmp, *field1, *field2, *c; | 90 char *tmp_base, *msg_base, *tmp, *field1, *field2, *c; |
76 | 91 |
355 char *c; | 370 char *c; |
356 char blank[4]; | 371 char blank[4]; |
357 long session_id, id, offset, total_size, length, flags; | 372 long session_id, id, offset, total_size, length, flags; |
358 long ack_session_id, ack_unique_id, ack_length; | 373 long ack_session_id, ack_unique_id, ack_length; |
359 | 374 |
360 memcpy(blank, 0, 4); | 375 blank[0] = blank[1] = blank[2] = blank[3] = 0; |
376 | |
377 g_strlcat(str, "\r\n", 3); | |
361 | 378 |
362 c = str + strlen(str); | 379 c = str + strlen(str); |
363 | 380 |
364 session_id = htonl(msg->msnslp_header.session_id); | 381 session_id = htonl(msg->msnslp_header.session_id); |
365 id = htonl(msg->msnslp_header.id); | 382 id = htonl(msg->msnslp_header.id); |
386 | 403 |
387 strncpy(c, msn_message_get_body(msg), len); | 404 strncpy(c, msn_message_get_body(msg), len); |
388 | 405 |
389 c += strlen(msn_message_get_body(msg)); | 406 c += strlen(msn_message_get_body(msg)); |
390 | 407 |
391 memcpy(c, blank, 1); c++; | 408 if (strlen(msn_message_get_body(msg)) > 0) |
409 *c++ = '\0'; | |
410 | |
392 memcpy(c, &msg->msnslp_footer.app_id, 4); c += 4; | 411 memcpy(c, &msg->msnslp_footer.app_id, 4); c += 4; |
412 *c = '\0'; | |
413 | |
414 gaim_debug_misc("msn", "cur size = %d\n", (c - str)); | |
415 gaim_debug_misc("msn", "msg->size = %d\n", msg->size); | |
416 | |
417 if (msg->size != (c - str)) | |
418 { | |
419 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
420 "Outgoing message size (%d) and string length (%d) " | |
421 "do not match!\n", msg->size, (c - str)); | |
422 } | |
393 } | 423 } |
394 else | 424 else |
395 { | 425 { |
396 g_snprintf(buf, sizeof(buf), "\r\n%s", msn_message_get_body(msg)); | 426 g_snprintf(buf, sizeof(buf), "\r\n%s", msn_message_get_body(msg)); |
397 | 427 |
398 g_strlcat(str, buf, len); | 428 g_strlcat(str, buf, len); |
399 } | 429 |
400 | 430 if (msg->size != strlen(msg_start)) { |
401 if (msg->size != strlen(msg_start)) { | 431 gaim_debug(GAIM_DEBUG_ERROR, "msn", |
402 gaim_debug(GAIM_DEBUG_ERROR, "msn", | 432 "Outgoing message size (%d) and string length (%d) " |
403 "Outgoing message size (%d) and string length (%d) " | 433 "do not match!\n", msg->size, strlen(msg_start)); |
404 "do not match!\n", msg->size, strlen(msg_start)); | 434 } |
405 } | 435 } |
406 | 436 |
407 return str; | 437 return str; |
408 } | 438 } |
409 | 439 |
428 { | 458 { |
429 g_return_if_fail(msg != NULL); | 459 g_return_if_fail(msg != NULL); |
430 g_return_if_fail(user != NULL); | 460 g_return_if_fail(user != NULL); |
431 | 461 |
432 msg->sender = user; | 462 msg->sender = user; |
433 | 463 |
434 msn_user_ref(msg->sender); | 464 msn_user_ref(msg->sender); |
435 } | 465 } |
436 | 466 |
437 MsnUser * | 467 MsnUser * |
438 msn_message_get_sender(const MsnMessage *msg) | 468 msn_message_get_sender(const MsnMessage *msg) |
447 { | 477 { |
448 g_return_if_fail(msg != NULL); | 478 g_return_if_fail(msg != NULL); |
449 g_return_if_fail(user != NULL); | 479 g_return_if_fail(user != NULL); |
450 | 480 |
451 msg->receiver = user; | 481 msg->receiver = user; |
452 | 482 |
453 msn_user_ref(msg->receiver); | 483 msn_user_ref(msg->receiver); |
454 } | 484 } |
455 | 485 |
456 MsnUser * | 486 MsnUser * |
457 msn_message_get_receiver(const MsnMessage *msg) | 487 msn_message_get_receiver(const MsnMessage *msg) |
507 g_return_if_fail(body != NULL); | 537 g_return_if_fail(body != NULL); |
508 | 538 |
509 if (msg->body != NULL) { | 539 if (msg->body != NULL) { |
510 msg->size -= strlen(msg->body); | 540 msg->size -= strlen(msg->body); |
511 g_free(msg->body); | 541 g_free(msg->body); |
542 | |
543 if (msg->msnslp_message) | |
544 msg->size--; | |
512 } | 545 } |
513 | 546 |
514 for (c = body; *c != '\0'; c++) { | 547 for (c = body; *c != '\0'; c++) { |
515 if (*c == '\n' && (c == body || *(c - 1) != '\r')) | 548 if (*c == '\n' && (c == body || *(c - 1) != '\r')) |
516 newline_count++; | 549 newline_count++; |
530 } | 563 } |
531 | 564 |
532 msg->body = buf; | 565 msg->body = buf; |
533 | 566 |
534 msg->size += new_len; | 567 msg->size += new_len; |
568 | |
569 if (msg->msnslp_message) | |
570 msg->size++; | |
535 } | 571 } |
536 | 572 |
537 const char * | 573 const char * |
538 msn_message_get_body(const MsnMessage *msg) | 574 msn_message_get_body(const MsnMessage *msg) |
539 { | 575 { |