changeset 12865:27c4145c6daa

[gaim-migrate @ 15216] A patch from Bleeter... "One thing that's always itched me about gaim, and adium for that matter, and a number of other clients (although, seems less now), is that when you leave a yahoo chatroom, it results in the yahoo servers sending out two 'user has left room' messages. "it would seem it's the server that sends us the CHAT_EXIT, not the other way round." committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Fri, 13 Jan 2006 22:20:43 +0000
parents 2c0f8815aa2e
children 43d8af815a9d
files src/protocols/yahoo/yahoochat.c
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/yahoo/yahoochat.c	Fri Jan 13 22:08:30 2006 +0000
+++ b/src/protocols/yahoo/yahoochat.c	Fri Jan 13 22:20:43 2006 +0000
@@ -726,8 +726,16 @@
 	struct yahoo_data *yd = gc->proto_data;
 	struct yahoo_packet *pkt;
 	GaimConversation *c;
+
+#if 0
+/* Bleeter, 12th Jan 2006:
+ * After comparing to native YIM6, it would appear all we need to do is send the
+ * YAHOO_SERVICE_CHATLOGOUT, because the YAHOO_SERVICE_CHATEXIT is the response
+ * from the server. Leaving this in causes double room-left messages to be generated.
+ */
 	char *eroom;
 	gboolean utf8 = 1;
+#endif
 
 	if (yd->wm) {
 		g_return_if_fail(yd->ycht != NULL);
@@ -736,12 +744,14 @@
 		return;
 	}
 
+#if 0
 	eroom = yahoo_string_encode(gc, room, &utf8);
 
 	pkt = yahoo_packet_new(YAHOO_SERVICE_CHATEXIT, YAHOO_STATUS_AVAILABLE, 0);
 	yahoo_packet_hash(pkt, "sss", 104, eroom, 109, dn, 108, "1");
 	yahoo_packet_hash_str(pkt, 112, "0"); /* what does this one mean? */
 	yahoo_packet_send_and_free(pkt, yd);
+#endif
 
 	yd->in_chat = 0;
 	if (yd->chat_name) {
@@ -761,7 +771,9 @@
 	yahoo_packet_send_and_free(pkt, yd);
 
 	yd->chat_online = 0;
+#if 0
 	g_free(eroom);
+#endif
 }
 
 /* borrowed from gtkconv.c */