diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2010-11-22 03:04:17 +0000 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2010-11-22 03:04:17 +0000 |
commit | f2f72a7150c3810c27ceddb792a6d49e6d65a65b (patch) | |
tree | fff7ae1f6b7b995bcc02b029c25cb3e80263dacc | |
parent | 0e184c86d6e6c9a9e17b6deebcd7ec1844cabe89 (diff) | |
parent | 6c07bbfe2193899515503e83d7c63e4d77b371cf (diff) | |
download | pidgin-f2f72a7150c3810c27ceddb792a6d49e6d65a65b.tar.gz |
merge of '99a593a0819b562d803d1f963476a7cd0d4db7f7'v2.7.6
and 'f352f10d5755679039efdc7a5d3235afc9e142e2'
-rw-r--r-- | libpurple/protocols/msn/msn.c | 1 | ||||
-rw-r--r-- | libpurple/protocols/msn/slplink.c | 7 | ||||
-rw-r--r-- | libpurple/protocols/msn/slpmsg.c | 35 | ||||
-rw-r--r-- | libpurple/protocols/msn/slpmsg.h | 10 | ||||
-rw-r--r-- | libpurple/protocols/msn/slpmsg_part.c | 6 |
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; |