pidgin: 8577210d: A patch from Thomas Gibson-Robinson to f...

qulogic at pidgin.im qulogic at pidgin.im
Sun Jan 18 20:01:33 EST 2009


-----------------------------------------------------------------
Revision: 8577210d86a9a6cd448208a4ef92c42cd39200f7
Ancestor: 42f77b0e8b8ebf5ff3c30d8f8022ac5d289631e8
Author: qulogic at pidgin.im
Date: 2009-01-19T00:58:19
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/8577210d86a9a6cd448208a4ef92c42cd39200f7

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

ChangeLog: 

A patch from Thomas Gibson-Robinson to fix receiving buddy icons, custom
emoticons and file transfers from WLM 9.
I have a feeling this should really be a bitwise test (ie, flags | 0x20 == 0x20)
but I can't really find many supportive docs for FT things and I'm no expert on
these MSN SLP bits.

Fixes #7180.
Fixes #7294.

-------------- next part --------------
============================================================
--- libpurple/protocols/msn/slpcall.c	e319e892a8ec90822c038a7e5ce5c78ec61d1cfd
+++ libpurple/protocols/msn/slpcall.c	dafa69781f73edfc41f5a1c0aa8236e8eb9d08cd
@@ -206,7 +206,7 @@ msn_slp_process_msg(MsnSlpLink *slplink,
 	body = slpmsg->buffer;
 	body_len = slpmsg->size;
 
-	if (slpmsg->flags == 0x0)
+	if (slpmsg->flags == 0x0 || slpmsg->flags == 0x1000000)
 	{
 		char *body_str;
 
@@ -214,7 +214,9 @@ msn_slp_process_msg(MsnSlpLink *slplink,
 		slpcall = msn_slp_sip_recv(slplink, body_str);
 		g_free(body_str);
 	}
-	else if (slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030)
+	else if (slpmsg->flags == 0x20 ||
+	         slpmsg->flags == 0x1000020 ||
+	         slpmsg->flags == 0x1000030)
 	{
 		slpcall = msn_slplink_find_slp_call_with_session_id(slplink, slpmsg->session_id);
 
============================================================
--- libpurple/protocols/msn/slplink.c	679a2f7d3e14f984fad46bd26882e69790cdaa72
+++ libpurple/protocols/msn/slplink.c	f6e6ce8f90df7fe17c0c37810e37497a9372a212
@@ -281,7 +281,8 @@ msn_slplink_send_msgpart(MsnSlpLink *slp
 		g_list_append(slpmsg->msgs, msg);
 	msn_slplink_send_msg(slplink, msg);
 
-	if ((slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030) &&
+	if ((slpmsg->flags == 0x20 || slpmsg->flags == 0x1000020 ||
+	     slpmsg->flags == 0x1000030) &&
 		(slpmsg->slpcall != NULL))
 	{
 		slpmsg->slpcall->progress = TRUE;
@@ -316,7 +317,8 @@ msg_ack(MsnMessage *msg, void *data)
 	else
 	{
 		/* The whole message has been sent */
-		if (slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030)
+		if (slpmsg->flags == 0x20 ||
+		    slpmsg->flags == 0x1000020 || slpmsg->flags == 0x1000030)
 		{
 			if (slpmsg->slpcall != NULL)
 			{
@@ -362,7 +364,8 @@ msn_slplink_release_slpmsg(MsnSlpLink *s
 		msg->msnslp_header.ack_size = slpmsg->ack_size;
 		msg->msnslp_header.ack_sub_id = slpmsg->ack_sub_id;
 	}
-	else if (slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030)
+	else if (slpmsg->flags == 0x20 ||
+	         slpmsg->flags == 0x1000020 || slpmsg->flags == 0x1000030)
 	{
 		MsnSlpCall *slpcall;
 		slpcall = slpmsg->slpcall;
@@ -532,7 +535,8 @@ msn_slplink_process_msg(MsnSlpLink *slpl
 
 			if (slpmsg->slpcall != NULL)
 			{
-				if (slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030)
+				if (slpmsg->flags == 0x20 ||
+				    slpmsg->flags == 0x1000020 || slpmsg->flags == 0x1000030)
 				{
 					PurpleXfer *xfer;
 
@@ -595,7 +599,8 @@ msn_slplink_process_msg(MsnSlpLink *slpl
 			memcpy(slpmsg->buffer + offset, data, len);
 	}
 
-	if ((slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030) &&
+	if ((slpmsg->flags == 0x20 ||
+	     slpmsg->flags == 0x1000020 || slpmsg->flags == 0x1000030) &&
 		(slpmsg->slpcall != NULL))
 	{
 		slpmsg->slpcall->progress = TRUE;
@@ -630,8 +635,9 @@ msn_slplink_process_msg(MsnSlpLink *slpl
 				msn_directconn_send_handshake(directconn);
 #endif
 		}
-		else if (slpmsg->flags == 0x0 || slpmsg->flags == 0x20 ||
-				 slpmsg->flags == 0x1000030)
+		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 */
 


More information about the Commits mailing list