Mercurial > pidgin.yaz
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;