This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository pyhoca-gui. commit 82848688e04e5daf9e31976cdd0d330e24a7b5e7 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sat Apr 5 01:18:58 2014 +0200 Gracefully handle "Connection refused" errors after a broker login has already been successful. --- debian/changelog | 2 ++ pyhoca/wxgui/frontend.py | 52 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ba15158..e883e27 100644 --- a/debian/changelog +++ b/debian/changelog @@ -34,6 +34,8 @@ pyhoca-gui (0.5.0.0-0x2go1) UNRELEASED; urgency=low with SSL certificates that have been self-signed against a non-public root-CA certificate file. - Handle "Connection refused" errors during broker login attempts. + - Gracefully handle "Connection refused" errors after a broker login has already + been successful. - Update English / German translation. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Wed, 08 Jan 2014 21:28:37 +0100 diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py index 08f9953..324d7ce 100644 --- a/pyhoca/wxgui/frontend.py +++ b/pyhoca/wxgui/frontend.py @@ -371,7 +371,10 @@ class PyHocaGUI(wx.App, x2go.X2GoClient): if not self.args.single_session_profile: self.auto_connect = True self._pyhoca_logger('opening default session profile %s' % profile_name, loglevel=x2go.log.loglevel_NOTICE) - self._X2GoClient__register_session(profile_name=profile_name, auto_connect=self.auto_connect) + try: + self._X2GoClient__register_session(profile_name=profile_name, auto_connect=self.auto_connect) + except x2go.x2go_exceptions.X2GoBrokerConnectionException: + self.session_registration_failed(profile_name=profile_name) if self.auto_connect or self.broker_autoconnect: gevent.spawn(self._auto_connect) @@ -819,7 +822,10 @@ class PyHocaGUI(wx.App, x2go.X2GoClient): return self.taskbar.SetIconConnecting(profile_name) if session_uuid is None: - session_uuid = self._X2GoClient__register_session(profile_name=profile_name) + try: + session_uuid = self._X2GoClient__register_session(profile_name=profile_name) + except x2go.x2go_exceptions.X2GoBrokerConnectionException: + self.session_registration_failed(profile_name) if session_uuid: self._temp_disabled_profile_names.append(profile_name) gevent.spawn(self._do_authenticate, evt, session_uuid) @@ -1648,6 +1654,19 @@ class PyHocaGUI(wx.App, x2go.X2GoClient): self.WakeUpIdle() self.ExitMainLoop() + def session_registration_failed(self, profile_name='UNKNOWN', **kwargs): + """\ + Notify about session registration failures. + + @param profile_name: profile name of session that called this hook method + @type profile_name: C{str} + + """ + self.notifier.send(_(u'%s - session failure') % profile_name, _(u'The session initialization failed.'), icon='session_error', timeout=10000) + if self.exit_on_disconnect: + self.WakeUpIdle() + self.ExitMainLoop() + def HOOK_desktop_sharing_denied(self, profile_name='UNKNOWN', **kwargs): """\ Notify about the denial of desktop sharing by the other user. @@ -1981,3 +2000,32 @@ class PyHocaGUI(wx.App, x2go.X2GoClient): evt.SetId(_dummy_id) self.OnServerDisconnect(evt) + def HOOK_broker_ignore_connection_problems(self, profile_name='UNKNOWN', is_profile_connected=False, **kwargs): + """\ + Query about what to do with broker connection failures. + + @param profile_name: profile name of a session that triggered this hook method + @type profile_name: C{str} + @param is_profile_connected: C{True} if the given session profile is already conneced to the server + @type is_profile_connected: C{bool} + + @return: C{true} if session startup shall be attempted anyway, even if session + broker is down. + @rtype: C{bool} + + """ + if is_profile_connected: + m = messages.PyHoca_MessageWindow_OkCancel(self, + title=_(u'%s: connection failure') % self.broker_name, + msg=_(u"While initializing a session for profile '%s' the connection\nto %s has failed.\n\nIt is possible to attempt session initialization anyway. Do you\nwant to continue?") % (profile_name, self.broker_name), + icon='warning', + profile_name=profile_name) + else: + m = messages.PyHoca_MessageWindow_OkCancel(self, + title=_(u'%s: connection failure') % self.broker_name, + msg=_(u"While connecting to profile '%s' the connection\nto %s has failed.\n\nIt is possible to attempt session initialization anyway. Do you\nwant to continue?") % (profile_name, self.broker_name), + icon='warning', + profile_name=profile_name) + + m.ShowModal() + return m.Ok() -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/pyhoca-gui.git