# HG changeset patch # User Elliott Sales de Andrade # Date 1260769550 0 # Node ID dc7b50d09922e5f2735c9cefdc3b1e0e59f1f84f # Parent 5d8867f11f0db6c808f309a666797b3a47a13c98 Don't sent an ACK to a SLP message if the SlpCall has been marked as wasted by lower code. Fixes #6523. diff -r 5d8867f11f0d -r dc7b50d09922 ChangeLog --- a/ChangeLog Mon Dec 14 05:42:16 2009 +0000 +++ b/ChangeLog Mon Dec 14 05:45:50 2009 +0000 @@ -8,6 +8,10 @@ * Messages from some mobile clients are no longer displayed as Chinese characters (broken in 2.6.4) + MSN: + * File transfer requests will no longer cause a crash if you delete the file + before the other side accepts. + XMPP: * Added support for the SCRAM-SHA-1 SASL mechanism. This is only available when built without Cyrus SASL support. diff -r 5d8867f11f0d -r dc7b50d09922 libpurple/protocols/msn/slplink.c --- a/libpurple/protocols/msn/slplink.c Mon Dec 14 05:42:16 2009 +0000 +++ b/libpurple/protocols/msn/slplink.c Mon Dec 14 05:45:50 2009 +0000 @@ -624,30 +624,37 @@ slpcall = msn_slp_process_msg(slplink, slpmsg); - if (slpmsg->flags == 0x100) - { - MsnDirectConn *directconn; + if (slpcall == NULL) { + msn_slpmsg_destroy(slpmsg); + return; + } - directconn = slplink->directconn; + if (!slpcall->wasted) { + if (slpmsg->flags == 0x100) + { + MsnDirectConn *directconn; + + directconn = slplink->directconn; #if 0 - if (!directconn->acked) - msn_directconn_send_handshake(directconn); + if (!directconn->acked) + msn_directconn_send_handshake(directconn); #endif - } - else if (slpmsg->flags == 0x00 || slpmsg->flags == 0x1000000 || - slpmsg->flags == 0x20 || slpmsg->flags == 0x1000020 || - slpmsg->flags == 0x1000030) - { - /* Release all the messages and send the ACK */ + } + else if (slpmsg->flags == 0x00 || slpmsg->flags == 0x1000000 || + slpmsg->flags == 0x20 || slpmsg->flags == 0x1000020 || + slpmsg->flags == 0x1000030) + { + /* Release all the messages and send the ACK */ - msn_slplink_send_ack(slplink, msg); - msn_slplink_send_queued_slpmsgs(slplink); + msn_slplink_send_ack(slplink, msg); + msn_slplink_send_queued_slpmsgs(slplink); + } + + } else { + msn_slpcall_destroy(slpcall); } msn_slpmsg_destroy(slpmsg); - - if (slpcall != NULL && slpcall->wasted) - msn_slpcall_destroy(slpcall); } }