changeset 407:79af85f08c28

Display server error messages to the user
author Mikael Berthe <mikael@lilotux.net>
date Sat, 27 Aug 2005 18:00:38 +0200
parents a9dd91e08eb3
children 73433860665c
files mcabber/src/jabglue.c
diffstat 1 files changed, 46 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/jabglue.c	Sat Aug 27 15:38:55 2005 +0200
+++ b/mcabber/src/jabglue.c	Sat Aug 27 18:00:38 2005 +0200
@@ -792,7 +792,8 @@
           }
         } else if (!strcmp(type, "set")) {
         } else if (!strcmp(type, "error")) {
-          char *name=NULL, *desc=NULL;
+          char *name=NULL, *desc;
+          char *text=NULL;
           int code = 0;
 
           x = xmlnode_get_tag(packet->x, "error");
@@ -800,46 +801,54 @@
           p = xmlnode_get_attrib(x, "id"); if (p) name = p;
           p = xmlnode_get_tag_data(packet->x, "error"); if (p) desc = p;
 
-#if 0
+          // Sometimes there is a text message
+          x = xmlnode_get_tag(x, "text");
+          p = xmlnode_get_data(x); if (p) text = p;
+
           switch(code) {
-            case 401: /* Unauthorized */
-            case 302: /* Redirect */
-            case 400: /* Bad request */
-            case 402: /* Payment Required */
-            case 403: /* Forbidden */
-            case 404: /* Not Found */
-            case 405: /* Not Allowed */
-            case 406: /* Not Acceptable */
-            case 407: /* Registration Required */
-            case 408: /* Request Timeout */
-            case 409: /* Conflict */
-            case 500: /* Internal Server Error */
-            case 501: /* Not Implemented */
-            case 502: /* Remote Server Error */
-            case 503: /* Service Unavailable */
-            case 504: /* Remote Server Timeout */
+            case 401: desc = "Unauthorized";
+                break;
+            case 302: desc = "Redirect";
+                break;
+            case 400: desc = "Bad request";
+                break;
+            case 402: desc = "Payment Required";
+                break;
+            case 403: desc = "Forbidden";
+                break;
+            case 404: desc = "Not Found";
+                break;
+            case 405: desc = "Not Allowed";
+                break;
+            case 406: desc = "Not Acceptable";
+                break;
+            case 407: desc = "Registration Required";
+                break;
+            case 408: desc = "Request Timeout";
+                break;
+            case 409: desc = "Conflict";
+                break;
+            case 500: desc = "Internal Server Error";
+                break;
+            case 501: desc = "Not Implemented";
+                break;
+            case 502: desc = "Remote Server Error";
+                break;
+            case 503: desc = "Service Unavailable";
+                break;
+            case 504: desc = "Remote Server Timeout";
+                break;
             default:
-                /*
-                if (!regmode) {
-                  face.log(desc.empty() ?
-                          _("+ [jab] error %d") :
-                          _("+ [jab] error %d: %s"),
-                          code, desc.c_str());
+                desc = NULL;
+          }
 
-                  if (!jhook.flogged && code != 501) {
-                    close(jc->fd);
-                    jc->fd = -1;
-                  }
+          scr_LogPrint(LPRINT_LOGNORM, "Error code from server: %d %s",
+                       code, (desc ? desc : ""));
+          if (text)
+            scr_LogPrint(LPRINT_LOGNORM, "Server message: %s", text);
 
-                } else {
-                  jhook.regerr = desc;
-
-                }
-                */
-          }
-#endif
-          scr_LogPrint(LPRINT_LOGNORM, "Error code from server (%d)", code);
-
+          if (name)
+            scr_LogPrint(LPRINT_DEBUG, "Error id: %s", name);
         }
         break;