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);
 }
+