[virt-tools-list] [virt-manager PATCH] virt-manager: close the SPICE main channel on an AUTH error
Cole Robinson
crobinso at redhat.com
Tue Oct 28 13:14:08 UTC 2014
On 10/28/2014 03:42 AM, Giuseppe Scrivano wrote:
> Cole Robinson <crobinso at redhat.com> writes:
>
>> On 10/21/2014 09:45 AM, Giuseppe Scrivano wrote:
>>> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1152981
>>>
>>> Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>
>>> ---
>>> virtManager/console.py | 4 ++++
>>> 1 file changed, 4 insertions(+)
>>>
>>> diff --git a/virtManager/console.py b/virtManager/console.py
>>> index 67bfe10..030a5c1 100644
>>> --- a/virtManager/console.py
>>> +++ b/virtManager/console.py
>>> @@ -405,6 +405,10 @@ class SpiceViewer(Viewer):
>>> self.console.disconnected()
>>> elif event == SpiceClientGLib.ChannelEvent.ERROR_AUTH:
>>> self.console.activate_auth_page()
>>> + for i in self._main_channel_hids:
>>> + self.main_channel.handler_disconnect(i)
>>> + self._main_channel_hids = []
>>> + self.main_channel = None
>>> elif event in [SpiceClientGLib.ChannelEvent.ERROR_CONNECT,
>>> SpiceClientGLib.ChannelEvent.ERROR_IO,
>>> SpiceClientGLib.ChannelEvent.ERROR_LINK,
>>>
>> This just duplicates similar code in SpiceDisplay.close(), should we call that
>> instead?
>
> here we close just the main channel, instead SpiceDisplay.close() does
> more things and if I just use it then the auth won't work.
>
> If you prefer, I can amend this code to factor out the common code in a
> function:
>
> diff --git a/virtManager/console.py b/virtManager/console.py
> index 030a5c1..a214538 100644
> --- a/virtManager/console.py
> +++ b/virtManager/console.py
> @@ -377,6 +377,13 @@ class SpiceViewer(Viewer):
> self._display.set_property("grab-keyboard",
> self.config.get_keyboard_grab_default())
>
> + def close_main_channel(self):
> + for i in self._main_channel_hids:
> + self.main_channel.handler_disconnect(i)
> + self._main_channel_hids = []
> +
> + self.main_channel = None
> +
> def close(self):
> if self.spice_session is not None:
> self.spice_session.disconnect()
> @@ -387,11 +394,7 @@ class SpiceViewer(Viewer):
> self._display = None
> self._display_channel = None
>
> - for i in self._main_channel_hids:
> - self.main_channel.handler_disconnect(i)
> - self._main_channel_hids = []
> -
> - self.main_channel = None
> + self.close_main_channel()
> self.usbdev_manager = None
>
> def is_open(self):
> @@ -405,10 +408,7 @@ class SpiceViewer(Viewer):
> self.console.disconnected()
> elif event == SpiceClientGLib.ChannelEvent.ERROR_AUTH:
> self.console.activate_auth_page()
> - for i in self._main_channel_hids:
> - self.main_channel.handler_disconnect(i)
> - self._main_channel_hids = []
> - self.main_channel = None
> + self.close_main_channel()
> elif event in [SpiceClientGLib.ChannelEvent.ERROR_CONNECT,
> SpiceClientGLib.ChannelEvent.ERROR_IO,
> SpiceClientGLib.ChannelEvent.ERROR_LINK,
>
> Thanks,
> Giuseppe
>
ACK to that, but please make it _close_main_channel so it's private to SpiceViewer
Thanks,
Cole
More information about the virt-tools-list
mailing list