diff libpurple/protocols/msn/oim.c @ 23490:fd276936164f

Make errors when sending OIM's more visible. Also, msn_session_report_user doesn't modify msg, so it can be const. References #5379.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 20 Jun 2008 05:36:18 +0000
parents 20da64b2e104
children 8fd6a97b9c67
line wrap: on
line diff
--- a/libpurple/protocols/msn/oim.c	Fri Jun 20 05:15:49 2008 +0000
+++ b/libpurple/protocols/msn/oim.c	Fri Jun 20 05:36:18 2008 +0000
@@ -333,6 +333,32 @@
 						g_queue_push_head(oim->send_queue, msg);
 						msn_oim_send_msg(oim);
 					}
+				} else {
+					/* Report the error */
+					const char *str_reason;
+
+					if (g_str_equal(faultcode_str, "q0:SystemUnavailable")) {
+						str_reason = _("Message was not sent because the system is "
+						               "unavailable. This normally happens when the "
+						               "user is blocked or does not exist.");
+
+					} else if (g_str_equal(faultcode_str, "q0:SenderThrottleLimitExceeded")) {
+						str_reason = _("Message was not sent because messages "
+						               "are being sent too quickly.");
+
+					} else if (g_str_equal(faultcode_str, "q0:InvalidContent")) {
+						str_reason = _("Message was not sent because an unknown "
+						               "encoding error occured.");
+
+					} else {
+						str_reason = _("Message was not sent because an unknown "
+						               "error occured.");
+					}
+					
+					msn_session_report_user(oim->session, msg->to_member, 
+						str_reason, PURPLE_MESSAGE_ERROR);
+					msn_session_report_user(oim->session, msg->to_member,
+						msg->oim_msg, PURPLE_MESSAGE_RAW);
 				}
 
 				g_free(faultcode_str);