Mercurial > pidgin.yaz
diff libpurple/protocols/msn/p2p.c @ 31491:7b771e6f1142
Change SLP P2P functions to use the new buffer access functions
instead of mapping to a struct. I don't mind this since it's limited
to just one pair of functions. This means that we don't need to use
any packing there.
Refs #12856.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 17 Dec 2010 07:49:47 +0000 |
parents | f26e961e1274 |
children | a8cc50c2279f |
line wrap: on
line diff
--- a/libpurple/protocols/msn/p2p.c Fri Dec 17 07:12:21 2010 +0000 +++ b/libpurple/protocols/msn/p2p.c Fri Dec 17 07:49:47 2010 +0000 @@ -25,68 +25,71 @@ #include "internal.h" #include "p2p.h" +#include "msnutils.h" MsnP2PHeader * -msn_p2p_header_from_wire(MsnP2PHeader *wire) +msn_p2p_header_from_wire(const char *wire) { MsnP2PHeader *header; header = g_new(MsnP2PHeader, 1); - header->session_id = GUINT32_FROM_LE(wire->session_id); - header->id = GUINT32_FROM_LE(wire->id); - header->offset = GUINT64_FROM_LE(wire->offset); - header->total_size = GUINT64_FROM_LE(wire->total_size); - header->length = GUINT32_FROM_LE(wire->length); - header->flags = GUINT32_FROM_LE(wire->flags); - header->ack_id = GUINT32_FROM_LE(wire->ack_id); - header->ack_sub_id = GUINT32_FROM_LE(wire->ack_sub_id); - header->ack_size = GUINT64_FROM_LE(wire->ack_size); + header->session_id = msn_pop32le(wire); + header->id = msn_pop32le(wire); + header->offset = msn_pop64le(wire); + header->total_size = msn_pop64le(wire); + header->length = msn_pop32le(wire); + header->flags = msn_pop32le(wire); + header->ack_id = msn_pop32le(wire); + header->ack_sub_id = msn_pop32le(wire); + header->ack_size = msn_pop64le(wire); return header; } -MsnP2PHeader * +char * msn_p2p_header_to_wire(MsnP2PHeader *header) { - MsnP2PHeader *wire; + char *wire; + char *tmp; - wire = g_new(MsnP2PHeader, 1); + tmp = wire = g_new(char, P2P_PACKET_HEADER_SIZE); - wire->session_id = GUINT32_TO_LE(header->session_id); - wire->id = GUINT32_TO_LE(header->id); - wire->offset = GUINT64_TO_LE(header->offset); - wire->total_size = GUINT64_TO_LE(header->total_size); - wire->length = GUINT32_TO_LE(header->length); - wire->flags = GUINT32_TO_LE(header->flags); - wire->ack_id = GUINT32_TO_LE(header->ack_id); - wire->ack_sub_id = GUINT32_TO_LE(header->ack_sub_id); - wire->ack_size = GUINT64_TO_LE(header->ack_size); + msn_push32le(tmp, header->session_id); + msn_push32le(tmp, header->id); + msn_push64le(tmp, header->offset); + msn_push64le(tmp, header->total_size); + msn_push32le(tmp, header->length); + msn_push32le(tmp, header->flags); + msn_push32le(tmp, header->ack_id); + msn_push32le(tmp, header->ack_sub_id); + msn_push64le(tmp, header->ack_size); return wire; } MsnP2PFooter * -msn_p2p_footer_from_wire(MsnP2PFooter *wire) +msn_p2p_footer_from_wire(const char *wire) { MsnP2PFooter *footer; footer = g_new(MsnP2PFooter, 1); - footer->value = GUINT32_FROM_BE(wire->value); + footer->value = msn_pop32be(wire); return footer; } -MsnP2PFooter * +char * msn_p2p_footer_to_wire(MsnP2PFooter *footer) { - MsnP2PFooter *wire; + char *wire; + char *tmp; - wire = g_new(MsnP2PFooter, 1); + tmp = wire = g_new(char, P2P_PACKET_FOOTER_SIZE); - wire->value = GUINT32_TO_BE(footer->value); + msn_push32be(tmp, footer->value); return wire; } @@ -98,3 +101,4 @@ flags == (P2P_WLM2009_COMP | P2P_MSN_OBJ_DATA) || flags == P2P_FILE_DATA); } +