diff options
author | Jonathon Jongsma <jjongsma@redhat.com> | 2015-06-18 13:55:40 -0500 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2015-06-19 14:39:48 -0500 |
commit | 5c0ed8a99f749fd6282032f2c49832d5faa3f88d (patch) | |
tree | 3a408cc7467f2f3bf2f7829b9d5b0ffac680ded9 /src | |
parent | bac799c6e99c7a14d39e683941a9225a5a13ee4b (diff) | |
download | virt-viewer-5c0ed8a99f749fd6282032f2c49832d5faa3f88d.tar.gz virt-viewer-5c0ed8a99f749fd6282032f2c49832d5faa3f88d.tar.xz virt-viewer-5c0ed8a99f749fd6282032f2c49832d5faa3f88d.zip |
Session: add vfunc to check auth retry capability
The spice session implementation can retry authentication on its own,
whereas the vnc session needs to tear down the session and re-connect in
order to retry a failed authentication. Add API to determine this so
that we can clean up some code related to authentication failures.
Diffstat (limited to 'src')
-rw-r--r-- | src/virt-viewer-session-spice.c | 7 | ||||
-rw-r--r-- | src/virt-viewer-session.c | 11 | ||||
-rw-r--r-- | src/virt-viewer-session.h | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c index 9fe5396..ec6ffa5 100644 --- a/src/virt-viewer-session-spice.c +++ b/src/virt-viewer-session-spice.c @@ -165,6 +165,12 @@ virt_viewer_session_spice_can_share_folder(VirtViewerSession *session) return spice_session_has_channel_type(self->priv->session, SPICE_CHANNEL_WEBDAV); } +static gboolean +virt_viewer_session_spice_can_retry_auth(VirtViewerSession *session G_GNUC_UNUSED) +{ + return TRUE; +} + static void virt_viewer_session_spice_class_init(VirtViewerSessionSpiceClass *klass) { @@ -186,6 +192,7 @@ virt_viewer_session_spice_class_init(VirtViewerSessionSpiceClass *klass) dclass->mime_type = virt_viewer_session_spice_mime_type; dclass->apply_monitor_geometry = virt_viewer_session_spice_apply_monitor_geometry; dclass->can_share_folder = virt_viewer_session_spice_can_share_folder; + dclass->can_retry_auth = virt_viewer_session_spice_can_retry_auth; g_type_class_add_private(klass, sizeof(VirtViewerSessionSpicePrivate)); diff --git a/src/virt-viewer-session.c b/src/virt-viewer-session.c index 131a500..67fa0fd 100644 --- a/src/virt-viewer-session.c +++ b/src/virt-viewer-session.c @@ -678,6 +678,17 @@ gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self) return klass->can_share_folder ? klass->can_share_folder(self) : FALSE; } +gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self) +{ + VirtViewerSessionClass *klass; + + g_return_val_if_fail(VIRT_VIEWER_IS_SESSION(self), FALSE); + + klass = VIRT_VIEWER_SESSION_GET_CLASS(self); + + return klass->can_retry_auth ? klass->can_retry_auth(self) : FALSE; +} + /* * Local variables: * c-indent-level: 4 diff --git a/src/virt-viewer-session.h b/src/virt-viewer-session.h index 533d79a..ea64bae 100644 --- a/src/virt-viewer-session.h +++ b/src/virt-viewer-session.h @@ -96,6 +96,7 @@ struct _VirtViewerSessionClass { void (*session_cancelled)(VirtViewerSession *session); void (*apply_monitor_geometry)(VirtViewerSession *session, GdkRectangle* monitors, guint nmonitors); gboolean (*can_share_folder)(VirtViewerSession *session); + gboolean (*can_retry_auth)(VirtViewerSession *session); }; GType virt_viewer_session_get_type(void); @@ -132,6 +133,7 @@ gchar* virt_viewer_session_get_uri(VirtViewerSession *self); void virt_viewer_session_set_file(VirtViewerSession *self, VirtViewerFile *file); VirtViewerFile* virt_viewer_session_get_file(VirtViewerSession *self); gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self); +gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self); G_END_DECLS |