changeset 28699:43200ff042ad

Fix sending /buzz on yahoo. Yahoo buzzes are '<ding>' sent as normal IMs. 'ding' is an unknown tag, and we were stripping unknown tags. So instead, send the tags we don't recognize as they are without stripping/changing them. ... or perhaps we could treat 'ding' as a known tag instead? Added test cases.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 06 Oct 2009 15:56:43 +0000
parents f7d7cf32a715
children 42fc2fc14db2
files ChangeLog libpurple/protocols/yahoo/util.c libpurple/tests/test_yahoo_util.c
diffstat 3 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Oct 04 18:01:35 2009 +0000
+++ b/ChangeLog	Tue Oct 06 15:56:43 2009 +0000
@@ -7,6 +7,9 @@
 	  is specified.
 	* Fix a crash when adding a buddy without an '@'.
 
+	Yahoo:
+	* Fix sending /buzz.
+
 	General:
 	* New 'plugins' sub-command to 'debug' command (i.e. '/debug plugins')
 	  to announce the list of loaded plugins (in both Finch and Pidgin).
--- a/libpurple/protocols/yahoo/util.c	Sun Oct 04 18:01:35 2009 +0000
+++ b/libpurple/protocols/yahoo/util.c	Tue Oct 06 15:56:43 2009 +0000
@@ -881,6 +881,9 @@
 						}
 						g_free(etag);
 					}
+				} else {
+					/* We don't know what the tag is. Send it unmodified. */
+					g_string_append(dest, tag);
 				}
 
 				i = j;
--- a/libpurple/tests/test_yahoo_util.c	Sun Oct 04 18:01:35 2009 +0000
+++ b/libpurple/tests/test_yahoo_util.c	Tue Oct 06 15:56:43 2009 +0000
@@ -180,6 +180,12 @@
 
 	assert_string_equal_free("\x1B[1mbold \x1B[#FF0000mred <font face=\"Comic Sans MS\" size=\"20\">larger \x1B[#000000mbacktoblack <font size=\"12\">normalsize</font>\x1B[#FF0000m</font>\x1B[#000000m\x1B[x1m",
 			yahoo_html_to_codes("<b>bold <font color=\"#FF0000\">red <font face=\"Comic Sans MS\" size=\"5\">larger <font color=\"#000000\">backtoblack <font size=\"3\">normalsize</font></font></font></font></b>"));
+
+	/* buzz/unknown tags */
+	assert_string_equal_free("<ding>",
+			yahoo_html_to_codes("<ding>"));
+	assert_string_equal_free("Unknown <tags>",
+			yahoo_html_to_codes("Unknown <tags>"));
 }
 END_TEST