diff options
author | Fabiano FidĂȘncio <fidencio@redhat.com> | 2014-09-23 16:23:42 +0200 |
---|---|---|
committer | Fabiano FidĂȘncio <fidencio@redhat.com> | 2014-09-26 16:30:43 +0200 |
commit | 141d69b7f523f1ecc3c328b43e4a54f9cbfb5eee (patch) | |
tree | 3f3ac322ffc924cc40ccbb5c1b9bea54739c44d3 /src/virt-viewer.c | |
parent | 42ffe6f8b4efe2a1e80fc98dbded37823133b55c (diff) | |
download | virt-viewer-141d69b7f523f1ecc3c328b43e4a54f9cbfb5eee.tar.gz virt-viewer-141d69b7f523f1ecc3c328b43e4a54f9cbfb5eee.tar.xz virt-viewer-141d69b7f523f1ecc3c328b43e4a54f9cbfb5eee.zip |
Improve authentication error messages
Adding a better error message to our default error message, based on the
libvirt error. Also, the libvirt error is shown as debug.
https://bugzilla.redhat.com/show_bug.cgi?id=1142742
Diffstat (limited to 'src/virt-viewer.c')
-rw-r--r-- | src/virt-viewer.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/virt-viewer.c b/src/virt-viewer.c index 3d5a363..c6066c5 100644 --- a/src/virt-viewer.c +++ b/src/virt-viewer.c @@ -669,6 +669,36 @@ virt_viewer_auth_libvirt_credentials(virConnectCredentialPtr cred, return ret; } +static gchar * +virt_viewer_get_error_message_from_vir_error(VirtViewer *self, + virErrorPtr error) +{ + VirtViewerPrivate *priv = self->priv; + const gchar *error_details = NULL; + gchar *detailed_error_message = NULL; + gchar *error_message = g_strdup_printf(_("Unable to connect to libvirt with URI: %s."), + priv->uri ? priv->uri : _("[none]")); + + g_debug("Error: %s", error->message); + + /* For now we are only treating authentication errors. */ + switch (error->code) { + case VIR_ERR_AUTH_FAILED: + error_details = _("Authentication failed."); + break; + default: + break; + } + + if (error_details != NULL) { + detailed_error_message = g_strdup_printf("%s\n%s", error_message, error_details); + g_free(error_message); + return detailed_error_message; + } + + return error_message; +} + static int virt_viewer_connect(VirtViewerApp *app) { @@ -698,8 +728,11 @@ virt_viewer_connect(VirtViewerApp *app) oflags); if (!priv->conn) { if (!priv->auth_cancelled) { - virt_viewer_app_simple_message_dialog(app, _("Unable to connect to libvirt with URI %s"), - priv->uri ? priv->uri : _("[none]")); + gchar *error_message = virt_viewer_get_error_message_from_vir_error(self, virGetLastError()); + + virt_viewer_app_simple_message_dialog(app, error_message); + + g_free(error_message); } return -1; |