aboutsummaryrefslogtreecommitdiff
path: root/src/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.c')
-rw-r--r--src/error.c121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/error.c b/src/error.c
new file mode 100644
index 0000000..0388584
--- /dev/null
+++ b/src/error.c
@@ -0,0 +1,121 @@
+/*
+ * error.c
+ *
+ * Report error messages
+ *
+ * (c) 2002-2005 Thomas White <taw27@srcf.ucam.org>
+ * Part of TuxMessenger - GTK+-based MSN Messenger client
+ *
+ * This package is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 dated June, 1991.
+ *
+ * This package is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this package; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <string.h>
+
+#include "mainwindow.h"
+
+void error_report(const char *message) {
+
+ GtkWidget *window;
+
+ window = gtk_message_dialog_new(mainwindow_gtkwindow(), GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, message);
+
+ g_signal_connect_swapped(window, "response", G_CALLBACK(gtk_widget_destroy), window);
+ gtk_widget_show(window);
+
+}
+
+static const char *decode_error(int error_number) {
+
+ /* decode server error numbers into understandable messages
+ for the User */
+
+ switch (error_number) {
+ /* I don't pretend to know what all of these mean... */
+
+ case 200: return "Server reported Syntax Error";
+ case 201: return "Server reported Invalid Parameter";
+ case 205: return "Server reported Invalid User";
+ case 206: return "Server reported FQDN Missing";
+ case 207: return "Already logged in";
+ case 208: return "Server reported Invalid Username";
+ case 209: return "Invalid friendly name";
+ case 210: return "You have too many people on your contact list";
+ case 215: return "IGNORE"; /* Already there */
+ case 216: return "That user is not on your list";
+ case 218: return "Already in that mode";
+ case 219: return "Already in opposite list";
+ case 280: return "Switchboard request failed";
+ case 281: return "NS XFR failed";
+ case 300: return "Server reported Required Fields Missing";
+ case 302: return "Not logged in";
+ case 403: return "List unavailable";
+ case 500: return "Internal server error";
+ case 501: return "DB server error";
+ case 510: return "File operation error";
+ case 520: return "Memory allocation error";
+ case 540: return "Failed challenge";
+ case 600: return "Server busy";
+ case 601: return "Server unavailable";
+ case 602: return "Peer NS down";
+ case 603: return "DB connection error";
+ case 604: return "Service is going down";
+ case 707: return "Error creating connection";
+ case 711: return "Error with blocking write";
+ case 712: return "Session overloaded";
+ case 713: return "User too active";
+ case 714: return "Too many sessions";
+ case 715: return "Not expected";
+ case 717: return "Bad friend file";
+ case 800: return "Too many requests: slow down...";
+ case 911: return "Authentication failed";
+ case 913: return "Not allowed while Invisible";
+ case 920: return "Not accepting new users";
+ case 928: return "TWN authentication ticket rejected - sign-in failed. This is probably a bug.";
+
+ }
+
+ return "Unknown error message reported by server";
+
+}
+
+void error_report_server(int number) {
+
+ const char *error_message;
+
+ error_message = decode_error(number);
+ if ( strcmp(error_message, "IGNORE") != 0 ) {
+ error_report(error_message);
+ }
+
+}
+
+void error_message(const char *message) {
+
+ GtkWidget *window;
+
+ window = gtk_message_dialog_new(mainwindow_gtkwindow(), GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, message);
+
+ g_signal_connect_swapped(window, "response", G_CALLBACK(gtk_widget_destroy), window);
+ gtk_widget_show(window);
+
+}