diff options
author | Jorge Villase?or <masca@cpw.pidgin.im> | 2010-08-04 04:30:03 +0000 |
---|---|---|
committer | Jorge Villase?or <masca@cpw.pidgin.im> | 2010-08-04 04:30:03 +0000 |
commit | cccab064fa538704a4878822db3b48a423afdf8a (patch) | |
tree | 8d45d33e9c4291285f259578b1b2ac9155b72087 | |
parent | 1a55484d81be32a2bce2db582ade07a736454811 (diff) | |
download | pidgin-cccab064fa538704a4878822db3b48a423afdf8a.tar.gz |
Use the SlpMessage header offset only instead of it and the one on the SlpMessage when sending it. This fixes sending big data which needs to be split in multiple messages.
-rw-r--r-- | libpurple/protocols/msn/slplink.c | 9 | ||||
-rw-r--r-- | libpurple/protocols/msn/slpmsg_part.c | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c index f11fb901f5..8c5e662167 100644 --- a/libpurple/protocols/msn/slplink.c +++ b/libpurple/protocols/msn/slplink.c @@ -298,7 +298,7 @@ msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) real_size = (slpmsg->flags == P2P_ACK) ? 0 : slpmsg->size; - if (slpmsg->offset < real_size) + if (slpmsg->header->offset < real_size) { if (slpmsg->slpcall && slpmsg->slpcall->xfer && purple_xfer_get_type(slpmsg->slpcall->xfer) == PURPLE_XFER_SEND && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED) @@ -308,15 +308,14 @@ msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) } else { - len = slpmsg->size - slpmsg->offset; + len = slpmsg->size - slpmsg->header->offset; if (len > MSN_SBCONN_MAX_SIZE) len = MSN_SBCONN_MAX_SIZE; - msn_slpmsgpart_set_bin_data(part, slpmsg->buffer + slpmsg->offset, len); + msn_slpmsgpart_set_bin_data(part, slpmsg->buffer + slpmsg->header->offset, len); } - slpmsg->header->offset = slpmsg->offset; slpmsg->header->length = len; } @@ -343,7 +342,7 @@ msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) if (slpmsg->slpcall->progress_cb != NULL) { slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size, - len, slpmsg->offset); + len, slpmsg->header->offset); } } diff --git a/libpurple/protocols/msn/slpmsg_part.c b/libpurple/protocols/msn/slpmsg_part.c index da5ea5b4e1..b57d9af2e6 100644 --- a/libpurple/protocols/msn/slpmsg_part.c +++ b/libpurple/protocols/msn/slpmsg_part.c @@ -167,11 +167,11 @@ msn_slpmsgpart_ack(MsnSlpMessagePart *part, void *data) real_size = (slpmsg->flags == P2P_ACK) ? 0 : slpmsg->size; - slpmsg->offset += part->header->length; + slpmsg->header->offset += part->header->length; slpmsg->parts = g_list_remove(slpmsg->parts, part); - if (slpmsg->offset < real_size) + if (slpmsg->header->offset < real_size) { if (slpmsg->slpcall->xfer && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED) { |