summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Sales de Andrade <qulogic@pidgin.im>2010-11-22 03:04:17 +0000
committerElliott Sales de Andrade <qulogic@pidgin.im>2010-11-22 03:04:17 +0000
commitf2f72a7150c3810c27ceddb792a6d49e6d65a65b (patch)
treefff7ae1f6b7b995bcc02b029c25cb3e80263dacc
parent0e184c86d6e6c9a9e17b6deebcd7ec1844cabe89 (diff)
parent6c07bbfe2193899515503e83d7c63e4d77b371cf (diff)
downloadpidgin-f2f72a7150c3810c27ceddb792a6d49e6d65a65b.tar.gz
merge of '99a593a0819b562d803d1f963476a7cd0d4db7f7'v2.7.6
and 'f352f10d5755679039efdc7a5d3235afc9e142e2'
-rw-r--r--libpurple/protocols/msn/msn.c1
-rw-r--r--libpurple/protocols/msn/slplink.c7
-rw-r--r--libpurple/protocols/msn/slpmsg.c35
-rw-r--r--libpurple/protocols/msn/slpmsg.h10
-rw-r--r--libpurple/protocols/msn/slpmsg_part.c6
5 files changed, 9 insertions, 50 deletions
diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c
index 9cffff8989..4c4752c186 100644
--- a/libpurple/protocols/msn/msn.c
+++ b/libpurple/protocols/msn/msn.c
@@ -1446,7 +1446,6 @@ msn_send_im_message(MsnSession *session, MsnMessage *msg)
}
msn_switchboard_send_msg(swboard, msg, TRUE);
- msn_message_destroy(msg);
}
static int
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c
index 0dff16906a..4e2feaf3a4 100644
--- a/libpurple/protocols/msn/slplink.c
+++ b/libpurple/protocols/msn/slplink.c
@@ -502,6 +502,7 @@ process_complete_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg, MsnP2PHeader *h
slpcall = msn_slp_process_msg(slplink, slpmsg);
if (slpcall == NULL) {
+ msn_slpmsg_destroy(slpmsg);
return;
}
@@ -540,6 +541,8 @@ process_complete_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg, MsnP2PHeader *h
}
}
+ msn_slpmsg_destroy(slpmsg);
+
if (!slpcall->wait_for_socket && slpcall->wasted)
msn_slpcall_destroy(slpcall);
}
@@ -623,7 +626,9 @@ msn_slplink_process_msg(MsnSlpLink *slplink, MsnSlpMessagePart *part)
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
diff --git a/libpurple/protocols/msn/slpmsg.c b/libpurple/protocols/msn/slpmsg.c
index ee9ad1c802..0851ee0216 100644
--- a/libpurple/protocols/msn/slpmsg.c
+++ b/libpurple/protocols/msn/slpmsg.c
@@ -54,41 +54,6 @@ msn_slpmsg_new(MsnSlpLink *slplink)
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)
{
diff --git a/libpurple/protocols/msn/slpmsg.h b/libpurple/protocols/msn/slpmsg.h
index facff320f2..6284b1de8d 100644
--- a/libpurple/protocols/msn/slpmsg.h
+++ b/libpurple/protocols/msn/slpmsg.h
@@ -78,16 +78,6 @@ struct _MsnSlpMessage
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.
diff --git a/libpurple/protocols/msn/slpmsg_part.c b/libpurple/protocols/msn/slpmsg_part.c
index f614c208c9..86d03fae1c 100644
--- a/libpurple/protocols/msn/slpmsg_part.c
+++ b/libpurple/protocols/msn/slpmsg_part.c
@@ -28,13 +28,13 @@ MsnSlpMessagePart *msn_slpmsgpart_new_from_data(const char *data, size_t data_le
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;