changeset 26866:0c077a605b8a

Add an FQY error handler so we don't disconnect if something incorrect was sent (unless the server kicked us itself). References #8588.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 02 May 2009 22:31:13 +0000
parents 2a3019c06631
children bbb89d322034
files libpurple/protocols/msn/notification.c
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/msn/notification.c	Sat May 02 21:13:02 2009 +0000
+++ b/libpurple/protocols/msn/notification.c	Sat May 02 22:31:13 2009 +0000
@@ -914,6 +914,26 @@
 }
 
 static void
+fqy_error_parse(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len)
+{
+	purple_debug_warning("msn", "FQY error %d: %s\n",
+	                     GPOINTER_TO_INT(cmd->payload_cbdata), payload);
+}
+
+static void
+fqy_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
+{
+	MsnCommand *cmd = cmdproc->last_cmd;
+
+	purple_debug_error("msn", "FQY error %d\n", error);
+	if (cmd->param_count > 1) {
+		cmd->payload_cb = fqy_error_parse;
+		cmd->payload_len = atoi(cmd->params[1]);
+		cmd->payload_cbdata = GINT_TO_POINTER(error);
+	}
+}
+
+static void
 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
 			 size_t len)
 {
@@ -2153,6 +2173,7 @@
 
 	msn_table_add_error(cbs_table, "ADD", add_error);
 	msn_table_add_error(cbs_table, "ADL", adl_error);
+	msn_table_add_error(cbs_table, "FQY", fqy_error);
 	msn_table_add_error(cbs_table, "REG", reg_error);
 	msn_table_add_error(cbs_table, "RMG", rmg_error);
 	msn_table_add_error(cbs_table, "USR", usr_error);