changeset 31391:e946cb06faec

merge of '3d06a17dd5bf8095f142141e395986dda870cfe6' and 'f34878b425fc3e5501d82254e87d1d9271470428'
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Mon, 22 Nov 2010 03:04:17 +0000
parents b64b2b05bd3c (diff) 11211e6427ae (current diff)
children a328691c761a
files
diffstat 5 files changed, 9 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/msn/msn.c	Sun Nov 21 22:07:08 2010 +0000
+++ b/libpurple/protocols/msn/msn.c	Mon Nov 22 03:04:17 2010 +0000
@@ -1446,7 +1446,6 @@
 	}
 
 	msn_switchboard_send_msg(swboard, msg, TRUE);
-	msn_message_destroy(msg);
 }
 
 static int
--- a/libpurple/protocols/msn/slplink.c	Sun Nov 21 22:07:08 2010 +0000
+++ b/libpurple/protocols/msn/slplink.c	Mon Nov 22 03:04:17 2010 +0000
@@ -502,6 +502,7 @@
 	slpcall = msn_slp_process_msg(slplink, slpmsg);
 
 	if (slpcall == NULL) {
+		msn_slpmsg_destroy(slpmsg);
 		return;
 	}
 
@@ -540,6 +541,8 @@
 		}
 	}
 
+	msn_slpmsg_destroy(slpmsg);
+
 	if (!slpcall->wait_for_socket && slpcall->wasted)
 		msn_slpcall_destroy(slpcall);
 }
@@ -623,7 +626,9 @@
 	if (header->offset + header->length >= header->total_size)
 		process_complete_msg(slplink, slpmsg, header);
 
-	msn_slpmsg_destroy(slpmsg);
+	/* NOTE: The slpmsg will be destroyed in process_complete_msg or left in
+	   the slplink until fully received. Don't free it here!
+	 */
 }
 
 void
--- a/libpurple/protocols/msn/slpmsg.c	Sun Nov 21 22:07:08 2010 +0000
+++ b/libpurple/protocols/msn/slpmsg.c	Mon Nov 22 03:04:17 2010 +0000
@@ -54,41 +54,6 @@
 	return slpmsg;
 }
 
-MsnSlpMessage *msn_slpmsg_new_from_data(const char *data, size_t data_len)
-{
-	MsnSlpMessage *slpmsg;
-	MsnP2PHeader *header;
-	const char *tmp;
-	int body_len;
-
-	tmp = data;
-	slpmsg = msn_slpmsg_new(NULL);
-
-	if (data_len < sizeof(*header)) {
-		return NULL;
-	}
-
-	/* Extract the binary SLP header */
-	slpmsg->header = msn_p2p_header_from_wire((MsnP2PHeader*)tmp);
-
-	/* Extract the body */
-	body_len = data_len - (tmp - data);
-	/* msg->body_len = msg->msnslp_header.length; */
-
-	if (body_len > 0) {
-		slpmsg->size = body_len;
-		slpmsg->buffer = g_malloc(body_len);
-		memcpy(slpmsg->buffer, tmp, body_len);
-		tmp += body_len;
-	}
-
-	/* Extract the footer */
-	if (body_len >= 0) 
-		slpmsg->footer = msn_p2p_footer_from_wire((MsnP2PFooter*)tmp);
-
-	return slpmsg;
-}
-
 void
 msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
 {
--- a/libpurple/protocols/msn/slpmsg.h	Sun Nov 21 22:07:08 2010 +0000
+++ b/libpurple/protocols/msn/slpmsg.h	Mon Nov 22 03:04:17 2010 +0000
@@ -78,16 +78,6 @@
 MsnSlpMessage *msn_slpmsg_new(MsnSlpLink *slplink);
 
 /**
- * Creates a MsnSlpMessage without a MsnSlpLink by parsing the raw data.
- *
- * @param data 		The raw data with the slp message.
- * @param data_len 	The len of the data
- *
- * @return The createed slp message.
- */
-MsnSlpMessage *msn_slpmsg_new_from_data(const char *data, size_t data_len);
-
-/**
  * Destroys a slp message
  *
  * @param slpmsg The slp message to destory.
--- a/libpurple/protocols/msn/slpmsg_part.c	Sun Nov 21 22:07:08 2010 +0000
+++ b/libpurple/protocols/msn/slpmsg_part.c	Mon Nov 22 03:04:17 2010 +0000
@@ -28,13 +28,13 @@
 	const char *tmp;
 	int body_len;
 
-	tmp = data;
-	part = msn_slpmsgpart_new(NULL, NULL);
-
 	if (data_len < sizeof(*header)) {
 		return NULL;
 	}
 
+	part = msn_slpmsgpart_new(NULL, NULL);
+	tmp = data;
+
 	/* Extract the binary SLP header */
 	part->header = msn_p2p_header_from_wire((MsnP2PHeader*)tmp);
 	tmp += P2P_PACKET_HEADER_SIZE;