Ticket #1931: listening_port_warning.patch

File listening_port_warning.patch, 4.2 KB (added by OmegaPhil, 13 years ago)

GTKUI warning when listening port not honoured

  • deluge/ui/gtkui/gtkui.py

    diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py
    index f5eea4c..30a8b22 100644
    a b def on_ed_response(response): 
    306306                ed.addCallback(on_ed_response) 
    307307            else: 
    308308                component.start() 
     309 
     310                # Check to warn user if deluge is using an invalid listening port if fixed listening ports are required 
     311                if not config["random_port"]: 
     312                    self.core_config = {} 
     313                    def _on_get_config(config): 
     314                        # Current configuration obtained - saving and fetching the actual listening port in use 
     315                        self.core_config = config 
     316                        client.core.get_listen_port().addCallback(_on_get_listen_port) 
     317 
     318                    def _on_get_listen_port(port): 
     319                        # Listening port obtained - warning user if it is not as configured 
     320                        if not port in range(self.core_config["listen_ports"][0], self.core_config["listen_ports"][1] + 1): 
     321                            dialogs.ErrorDialog( 
     322                                _("Listening Port Warning"), 
     323                                _("%d is in use however the range %d-%d has been configured.\n\nIf the specified range has been forwarded through a NAT and/or firewall then you will receive no incoming connections.") % (port, self.core_config["listen_ports"][0], self.core_config["listen_ports"][1]), 
     324                                details=_("This likely occurred as libtorrent was unable to bind a listening port\nin the range given - make sure no other programs are using these ports.\nIf this occurred after deluge was restarted then the network stack\nmay think the chosen port is still in use - please shutdown deluge, wait\n10 seconds then start up again. If this still fails, please define a broader\nlistening port range.") 
     325                            ).run() 
     326 
     327                        # Cleaning up 
     328                        del self.core_config 
     329 
     330                    # Obtaining current configuration 
     331                    client.core.get_config().addCallback(_on_get_config) 
     332 
    309333                return 
    310334 
    311335        else: 
  • deluge/ui/gtkui/preferences.py

    diff --git a/deluge/ui/gtkui/preferences.py b/deluge/ui/gtkui/preferences.py
    index 7ba931a..a02c4e9 100644
    a b def on_response(response): 
    853853                _("You must now restart the deluge UI") 
    854854            ) 
    855855            dialog.run() 
     856        else: 
     857            # No major GUI changes 
     858            # Checking whether the listening port range has been changed (including when the listening interface changes) 
     859            if not new_core_config["random_port"] and ("listen_interface" in config_to_set or "listen_ports" in config_to_set): 
     860                # Change detected - need to verify listening port has been set properly 
     861                from twisted.internet import reactor 
     862                reactor.callLater(0.5, lambda: client.core.get_listen_port().addCallback(_on_get_listen_port)) 
     863 
     864                def _on_get_listen_port(port): 
     865                    # Listening port obtained - warning user if it is not as configured 
     866                    if not port in range(self.core_config["listen_ports"][0], self.core_config["listen_ports"][1] + 1): 
     867                        dialogs.ErrorDialog( 
     868                            _("Listening Port Warning"), 
     869                            _("%d is in use however the range %d-%d has been configured.\n\nIf the specified range has been forwarded through a NAT and/or firewall then you will receive no incoming connections.") % (port, self.core_config["listen_ports"][0], self.core_config["listen_ports"][1]), 
     870                            details=_("This likely occurred as libtorrent was unable to bind a listening port\nin the range given - make sure no other programs are using these ports.\nIf this occurred after deluge was restarted then the network stack\nmay think the chosen port is still in use - please shutdown deluge, wait\n10 seconds then start up again. If this still fails, please define a broader\nlistening port range.") 
     871                        ).run() 
    856872 
    857873    def hide(self): 
    858874        self.builder.get_object("port_img").hide()