diff libpurple/protocols/msn/msn.c @ 25056:b0c75121cf66

After parsing the message text for HTML formatting, don't try to send it if it ends up empty. That might happen if your message only contained stuff like horizontal lines, which MSN does not support, and will ignore. Fixes #8057.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Wed, 04 Feb 2009 05:15:49 +0000
parents b5c82724598c
children fd5eedf131b4 af42303654a5 03279387cbe2 4561aa5b368c
line wrap: on
line diff
--- a/libpurple/protocols/msn/msn.c	Wed Feb 04 01:44:30 2009 +0000
+++ b/libpurple/protocols/msn/msn.c	Wed Feb 04 05:15:49 2009 +0000
@@ -1176,6 +1176,7 @@
 	MsnMessage *msg;
 	char *msgformat;
 	char *msgtext;
+	size_t msglen;
 	const char *username;
 
 	purple_debug_info("msn", "send IM {%s} to %s\n", message, who);
@@ -1203,13 +1204,23 @@
 	}
 
 	msn_import_html(message, &msgformat, &msgtext);
+	msglen = strlen(msgtext);
+	if (msglen == 0) {
+		/* Stuff like <hr> will be ignored. Don't send an empty message
+		   if that's all there is. */
+		g_free(msgtext);
+		g_free(msgformat);
+
+		return 0;
+	}
+
 	if (msn_user_is_online(account, who) ||
 		msn_user_is_yahoo(account, who) ||
 		swboard != NULL) {
 		/*User online or have a swboard open because it's invisible
 		 * and sent us a message,then send Online Instant Message*/
  
-		if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564)
+		if (msglen + strlen(msgformat) + strlen(VERSION) > 1564)
 		{
 			g_free(msgformat);
 			g_free(msgtext);