Mercurial > pidgin.yaz
comparison libpurple/protocols/msn/directconn.c @ 30443:ecd237d3f578
Minor cleanups.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sun, 11 Apr 2010 05:53:02 +0000 |
parents | ca7dec8303cb |
children | db0f95b6a2cf |
comparison
equal
deleted
inserted
replaced
30442:ca7dec8303cb | 30443:ecd237d3f578 |
---|---|
92 } | 92 } |
93 | 93 |
94 static void | 94 static void |
95 msn_dc_destroy_packet(MsnDirectConnPacket *p) | 95 msn_dc_destroy_packet(MsnDirectConnPacket *p) |
96 { | 96 { |
97 if (p->data) | 97 g_free(p->data); |
98 g_free(p->data); | |
99 | 98 |
100 if (p->msg) | 99 if (p->msg) |
101 msn_message_unref(p->msg); | 100 msn_message_unref(p->msg); |
102 | 101 |
103 g_free(p); | 102 g_free(p); |
645 static void | 644 static void |
646 msn_dc_send_handshake(MsnDirectConn *dc) | 645 msn_dc_send_handshake(MsnDirectConn *dc) |
647 { | 646 { |
648 MsnDirectConnPacket *p; | 647 MsnDirectConnPacket *p; |
649 const gchar *h; | 648 const gchar *h; |
650 guint32 l; | 649 guint32 len; |
651 | 650 |
652 g_return_if_fail(dc != NULL); | 651 g_return_if_fail(dc != NULL); |
653 | 652 |
654 p = msn_dc_new_packet(); | 653 p = msn_dc_new_packet(); |
655 | 654 |
656 p->length = 4 + DC_PACKET_HEADER_SIZE; | 655 p->length = 4 + DC_PACKET_HEADER_SIZE; |
657 p->data = g_malloc(p->length); | 656 p->data = g_malloc(p->length); |
658 | 657 |
659 l = DC_PACKET_HEADER_SIZE; | 658 len = GUINT32_TO_LE(DC_PACKET_HEADER_SIZE); |
660 l = GUINT32_TO_LE(l); | 659 memcpy(p->data, &len, 4); |
661 memcpy(p->data, &l, 4); | |
662 | 660 |
663 dc->header.session_id = 0; | 661 dc->header.session_id = 0; |
664 dc->header.id = dc->slpcall->slplink->slp_seq_id++; | 662 dc->header.id = dc->slpcall->slplink->slp_seq_id++; |
665 dc->header.offset = 0; | 663 dc->header.offset = 0; |
666 dc->header.total_size = 0; | 664 dc->header.total_size = 0; |
677 static void | 675 static void |
678 msn_dc_send_handshake_reply(MsnDirectConn *dc) | 676 msn_dc_send_handshake_reply(MsnDirectConn *dc) |
679 { | 677 { |
680 MsnDirectConnPacket *p; | 678 MsnDirectConnPacket *p; |
681 const gchar *h; | 679 const gchar *h; |
682 guint32 l; | 680 guint32 len; |
683 | 681 |
684 g_return_if_fail(dc != NULL); | 682 g_return_if_fail(dc != NULL); |
685 | 683 |
686 p = msn_dc_new_packet(); | 684 p = msn_dc_new_packet(); |
687 | 685 |
688 p->length = 4 + DC_PACKET_HEADER_SIZE; | 686 p->length = 4 + DC_PACKET_HEADER_SIZE; |
689 p->data = g_malloc(p->length); | 687 p->data = g_malloc(p->length); |
690 | 688 |
691 l = DC_PACKET_HEADER_SIZE; | 689 len = GUINT32_TO_LE(DC_PACKET_HEADER_SIZE); |
692 l = GUINT32_TO_LE(l); | 690 memcpy(p->data, &len, 4); |
693 memcpy(p->data, &l, 4); | |
694 | 691 |
695 dc->header.id = dc->slpcall->slplink->slp_seq_id++; | 692 dc->header.id = dc->slpcall->slplink->slp_seq_id++; |
696 dc->header.length = 0; | 693 dc->header.length = 0; |
697 | 694 |
698 h = msn_dc_serialize_binary_header(dc); | 695 h = msn_dc_serialize_binary_header(dc); |
722 memcpy(p->data, &length, 4); | 719 memcpy(p->data, &length, 4); |
723 memcpy(p->data + 4, &msg->msnslp_header, DC_PACKET_HEADER_SIZE); | 720 memcpy(p->data + 4, &msg->msnslp_header, DC_PACKET_HEADER_SIZE); |
724 memcpy(p->data + 4 + DC_PACKET_HEADER_SIZE, msg->body, msg->body_len); | 721 memcpy(p->data + 4 + DC_PACKET_HEADER_SIZE, msg->body, msg->body_len); |
725 | 722 |
726 p->sent_cb = msn_dc_send_packet_cb; | 723 p->sent_cb = msn_dc_send_packet_cb; |
727 p->msg = msg; | 724 p->msg = msn_message_ref(msg); |
728 msn_message_ref(msg); | |
729 | 725 |
730 msn_dc_enqueue_packet(dc, p); | 726 msn_dc_enqueue_packet(dc, p); |
731 } | 727 } |
732 | 728 |
733 static int | 729 static int |
737 | 733 |
738 switch (dc->state) { | 734 switch (dc->state) { |
739 case DC_STATE_CLOSED: | 735 case DC_STATE_CLOSED: |
740 break; | 736 break; |
741 | 737 |
742 case DC_STATE_FOO: { | 738 case DC_STATE_FOO: |
743 /* FOO message is always 4 bytes long */ | 739 /* FOO message is always 4 bytes long */ |
744 if (packet_length != 4 || memcmp(dc->in_buffer, "\4\0\0\0foo", 8) != 0) | 740 if (packet_length != 4 || memcmp(dc->in_buffer, "\4\0\0\0foo", 8) != 0) |
745 return DC_PROCESS_FALLBACK; | 741 return DC_PROCESS_FALLBACK; |
746 | 742 |
747 dc->state = DC_STATE_HANDSHAKE; | 743 dc->state = DC_STATE_HANDSHAKE; |
748 break; | 744 break; |
749 } | 745 |
750 | 746 case DC_STATE_HANDSHAKE: |
751 case DC_STATE_HANDSHAKE: { | |
752 if (packet_length != DC_PACKET_HEADER_SIZE) | 747 if (packet_length != DC_PACKET_HEADER_SIZE) |
753 return DC_PROCESS_FALLBACK; | 748 return DC_PROCESS_FALLBACK; |
754 | 749 |
755 /* TODO: Check! */ | 750 /* TODO: Check! */ |
756 msn_dc_send_handshake_reply(dc); | 751 msn_dc_send_handshake_reply(dc); |
757 dc->state = DC_STATE_ESTABLISHED; | 752 dc->state = DC_STATE_ESTABLISHED; |
758 | 753 |
759 msn_slpcall_session_init(dc->slpcall); | 754 msn_slpcall_session_init(dc->slpcall); |
760 dc->slpcall = NULL; | 755 dc->slpcall = NULL; |
761 break; | 756 break; |
762 } | |
763 | 757 |
764 case DC_STATE_HANDSHAKE_REPLY: | 758 case DC_STATE_HANDSHAKE_REPLY: |
765 /* TODO: Check! */ | 759 /* TODO: Check! */ |
766 dc->state = DC_STATE_ESTABLISHED; | 760 dc->state = DC_STATE_ESTABLISHED; |
767 | 761 |