summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug_fix-bitmask-autostart1
-rw-r--r--src/leap/bitmask/frontend_app.py8
-rw-r--r--src/leap/bitmask/gui/mainwindow.py12
3 files changed, 17 insertions, 4 deletions
diff --git a/changes/bug_fix-bitmask-autostart b/changes/bug_fix-bitmask-autostart
new file mode 100644
index 00000000..ee72c9f2
--- /dev/null
+++ b/changes/bug_fix-bitmask-autostart
@@ -0,0 +1 @@
+- Do not disable autostart if the quit is triggered by a system logout. Resolves Bug #6424.
diff --git a/src/leap/bitmask/frontend_app.py b/src/leap/bitmask/frontend_app.py
index b0a149f9..55e188f7 100644
--- a/src/leap/bitmask/frontend_app.py
+++ b/src/leap/bitmask/frontend_app.py
@@ -51,7 +51,13 @@ def signal_handler(window, pid, signum, frame):
if pid == my_pid:
pname = multiprocessing.current_process().name
logger.debug("{0}: SIGNAL #{1} catched.".format(pname, signum))
- window.quit()
+ disable_autostart = True
+ if signum == 15: # SIGTERM
+ # Do not disable autostart on SIGTERM since this is the signal that
+ # the system sends to bitmask when the user asks to do a system
+ # logout.
+ disable_autostart = False
+ window.quit(disable_autostart=disable_autostart)
def run_frontend(options, flags_dict, backend_pid=None):
diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py
index 55628847..4b665337 100644
--- a/src/leap/bitmask/gui/mainwindow.py
+++ b/src/leap/bitmask/gui/mainwindow.py
@@ -1054,7 +1054,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
if not e.spontaneous():
# if the system requested the `close` then we should quit.
self._system_quit = True
- self.quit()
+ self.quit(disable_autostart=False)
return
if QtGui.QSystemTrayIcon.isSystemTrayAvailable() and \
@@ -1622,18 +1622,24 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
logger.debug('Terminating vpn')
self._backend.eip_stop(shutdown=True)
- def quit(self):
+ def quit(self, disable_autostart=True):
"""
Start the quit sequence and wait for services to finish.
Cleanup and close the main window before quitting.
+
+ :param disable_autostart: whether we should disable the autostart
+ feature or not
+ :type disable_autostart: bool
"""
if self._quitting:
return
+ if disable_autostart:
+ autostart.set_autostart(False)
+
self._quitting = True
self._close_to_tray = False
logger.debug('Quitting...')
- autostart.set_autostart(False)
# first thing to do quitting, hide the mainwindow and show tooltip.
self.hide()