{"record":{"id":"07b33f1d531c7ef7","repo":"HelloZeroNet/ZeroNet","slug":"can-t-find-bindable-port","errorCode":null,"errorMessage":"Can't find bindable port","messagePattern":"Can't find bindable port","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/File/FileServer.py","lineNumber":49,"sourceCode":"\n        self.supported_ip_types = [\"ipv4\"]  # Outgoing ip_type support\n        if helper.getIpType(ip) == \"ipv6\" or self.isIpv6Supported():\n            self.supported_ip_types.append(\"ipv6\")\n\n        if ip_type == \"ipv6\" or (ip_type == \"dual\" and \"ipv6\" in self.supported_ip_types):\n            ip = ip.replace(\"*\", \"::\")\n        else:\n            ip = ip.replace(\"*\", \"0.0.0.0\")\n\n        if config.tor == \"always\":\n            port = config.tor_hs_port\n            config.fileserver_port = port\n        elif port == 0:  # Use random port\n            port_range_from, port_range_to = list(map(int, config.fileserver_port_range.split(\"-\")))\n            port = self.getRandomPort(ip, port_range_from, port_range_to)\n            config.fileserver_port = port\n            if not port:\n                raise Exception(\"Can't find bindable port\")\n            if not config.tor == \"always\":\n                config.saveValue(\"fileserver_port\", port)  # Save random port value for next restart\n                config.arguments.fileserver_port = port\n\n        ConnectionServer.__init__(self, ip, port, self.handleRequest)\n        self.log.debug(\"Supported IP types: %s\" % self.supported_ip_types)\n\n        if ip_type == \"dual\" and ip == \"::\":\n            # Also bind to ipv4 addres in dual mode\n            try:\n                self.log.debug(\"Binding proxy to %s:%s\" % (\"::\", self.port))\n                self.stream_server_proxy = StreamServer(\n                    (\"0.0.0.0\", self.port), self.handleIncomingConnection, spawn=self.pool, backlog=100\n                )\n            except Exception as err:\n                self.log.info(\"StreamServer proxy create error: %s\" % Debug.formatException(err))\n\n        self.port_opened = {}","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/HelloZeroNet/ZeroNet/blob/454c0b2e7e000fda7000cba49027541fbf327b96/src/File/FileServer.py#L31-L67","documentation":"Startup failure in FileServer.__init__ port selection: when config requires the Tor hidden-service port or a random port, the code iterates the configured port range and this error fires when every candidate port fails to bind (all occupied or forbidden), so the file server cannot start listening at all.","triggerScenarios":"Thrown at src/File/FileServer.py:49 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Free the ports in the configured range or change config.values (fileserver_port / port range) to an open range","Run with elevated privileges only if binding a privileged port, or pick a port >1024","Configure tor='always' with a valid tor_hs_port if normal binding is impossible"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"454c0b2e7e000fda7000cba49027541fbf327b96","analyzedAt":"2026-09-02T19:46:57.278Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}