pidgin: 50a93a0f: Don't sent an ACK to a SLP message if th...

qulogic at pidgin.im qulogic at pidgin.im
Mon Dec 14 02:27:34 EST 2009


-----------------------------------------------------------------
Revision: 50a93a0fe5c58ba016220ac9e08fa039c9999a9d
Ancestor: 27665a8b222aae5ab3dfaeea99ba9ff9afc5c832
Author: qulogic at pidgin.im
Date: 2009-12-14T05:45:50
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/50a93a0fe5c58ba016220ac9e08fa039c9999a9d

Modified files:
        ChangeLog libpurple/protocols/msn/slplink.c

ChangeLog: 

Don't sent an ACK to a SLP message if the SlpCall has been marked as wasted
by lower code.

Fixes #6523.

-------------- next part --------------
============================================================
--- ChangeLog	c28ff952b1aae47b06bcd1631f08d6a2c4bdb75d
+++ ChangeLog	944bd3d88a5710c0ae7a634df87f2516ab35841f
@@ -8,6 +8,10 @@ version 2.6.5 (??/??/20??):
 	* 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.
============================================================
--- libpurple/protocols/msn/slplink.c	d7c9e917dead2564051195b071447b36c604a409
+++ libpurple/protocols/msn/slplink.c	0e3b791483d2436adcf29211c58329c5a66e4224
@@ -624,30 +624,37 @@ msn_slplink_process_msg(MsnSlpLink *slpl
 
 		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);
 	}
 }
 


More information about the Commits mailing list