Blob Blame History Raw
diff -up system-config-printer-1.4.1/firewallsettings.py.firewall-already-enabled system-config-printer-1.4.1/firewallsettings.py
--- system-config-printer-1.4.1/firewallsettings.py.firewall-already-enabled	2013-05-09 13:10:43.000000000 +0200
+++ system-config-printer-1.4.1/firewallsettings.py	2018-01-12 17:33:35.395041295 +0100
@@ -118,7 +118,15 @@ class FirewallD:
         if not self._get_fw_data ():
             return
 
-        self._fw_data.addService (service)
+        from firewall.errors import FirewallError
+        import firewall.errors
+        try:
+            self._fw_data.addService (service)
+        except FirewallError as e:
+            if e.code is firewall.errors.ALREADY_ENABLED:
+                pass
+            else:
+                raise FirewallError (e.code, e.msg)
 
     def check_ipp_client_allowed (self):
         if not self._get_fw_data ():
diff -up system-config-printer-1.4.1/newprinter.py.firewall-already-enabled system-config-printer-1.4.1/newprinter.py
--- system-config-printer-1.4.1/newprinter.py.firewall-already-enabled	2018-01-12 17:00:32.515561070 +0100
+++ system-config-printer-1.4.1/newprinter.py	2018-01-12 17:35:50.044367360 +0100
@@ -1979,7 +1979,9 @@ class NewPrinterGUI(GtkGUI):
     def adjust_firewall_response (self, dialog, response):
         dialog.destroy ()
         if response == Gtk.ResponseType.YES:
-            self.firewall.add_service (firewallsettings.IPP_SERVER_SERVICE)
+            ipp_server_allowed = self.firewall.check_ipp_server_allowed ()
+            if not ipp_server_allowed:
+                self.firewall.add_service (firewallsettings.IPP_SERVER_SERVICE)
             self.firewall.write ()
 
         debugprint ("Fetching devices after firewall dialog response")