summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer.c
diff options
context:
space:
mode:
authorFabiano FidĂȘncio <fidencio@redhat.com>2014-09-23 16:23:42 +0200
committerFabiano FidĂȘncio <fidencio@redhat.com>2014-09-26 16:30:43 +0200
commit141d69b7f523f1ecc3c328b43e4a54f9cbfb5eee (patch)
tree3f3ac322ffc924cc40ccbb5c1b9bea54739c44d3 /src/virt-viewer.c
parent42ffe6f8b4efe2a1e80fc98dbded37823133b55c (diff)
downloadvirt-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.c37
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;