From e7bcf87788588c3a38ce18c9a8d69bbe156860e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20Nizio?= Date: Mon, 3 Mar 2014 08:31:47 +0100 Subject: [PATCH] Fix crash when no log in supported location can be found This can happen for example on systems that use Journal from systemd. In this case, ufw-gtk exits with a traceback containing: IOError: [Errno 2] No such file or directory: '/var/log/messages.log' (this is the last log file tried). The patch works around the issue by handling the error and disabling the widget in the "Events" tab. --- gfw/frontend_gtk.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gfw/frontend_gtk.py b/gfw/frontend_gtk.py index 75ebb33..75dfde0 100644 --- a/gfw/frontend_gtk.py +++ b/gfw/frontend_gtk.py @@ -33,14 +33,21 @@ from gfw.frontend import Frontend class Notifier(gfw.event.Notifier): - def __init__(self, callback): - gfw.event.Notifier.__init__(self, callback) + def __init__(self, callback, inactive_handler): + self._active = False + try: + gfw.event.Notifier.__init__(self, callback) + except IOError: + inactive_handler() + return + self._active = True self._w = gobject.io_add_watch(self._fd, gobject.IO_IN | gobject.IO_PRI, self._trigger) def __del__(self): - gfw.event.Notifier.__del__(self) - gobject.source_remove(self._w) + if self._active: + gfw.event.Notifier.__del__(self) + gobject.source_remove(self._w) class Builder(gtk.Builder): @@ -90,7 +97,8 @@ class GtkFrontend(Frontend): data = (timestamp, event, conn['IN'], conn['OUT'], conn['PROTO'], conn['SRC'], spt, conn['DST'], dpt) self.ui.events_model.append(data) - self._notifier = Notifier(callback) + self._notifier = Notifier(callback, + lambda: self.ui.events_view.set_sensitive(False)) self.ui.main_window.show_all() ## FIXME: for the 0.3.0 release, hide the tab for the connections view page = self.ui.view.get_nth_page(2) -- 1.9.0