Mercurial > pidgin
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 { |
