{"record":{"id":"c0ff5a63c67cc4a7","repo":"HelloZeroNet/ZeroNet","slug":"unknown-protocol-s","errorCode":null,"errorMessage":"Unknown protocol: %s","messagePattern":"Unknown protocol: (.+?)","errorType":"exception","errorClass":"AnnounceError","httpStatus":null,"severity":"error","filePath":"src/Site/SiteAnnouncer.py","lineNumber":203,"sourceCode":"\n        last_status = self.stats[tracker][\"status\"]\n        self.stats[tracker][\"status\"] = \"announcing\"\n        self.stats[tracker][\"time_request\"] = time.time()\n        global_stats[tracker][\"time_request\"] = time.time()\n        if config.verbose:\n            self.site.log.debug(\"Tracker announcing to %s (mode: %s)\" % (tracker, mode))\n        if mode == \"update\":\n            num_want = 10\n        else:\n            num_want = 30\n\n        handler = self.getTrackerHandler(address_parts[\"protocol\"])\n        error = None\n        try:\n            if handler:\n                peers = handler(address_parts[\"address\"], mode=mode, num_want=num_want)\n            else:\n                raise AnnounceError(\"Unknown protocol: %s\" % address_parts[\"protocol\"])\n        except Exception as err:\n            self.site.log.warning(\"Tracker %s announce failed: %s in mode %s\" % (tracker, Debug.formatException(err), mode))\n            error = err\n\n        if error:\n            self.stats[tracker][\"status\"] = \"error\"\n            self.stats[tracker][\"time_status\"] = time.time()\n            self.stats[tracker][\"last_error\"] = str(error)\n            self.stats[tracker][\"time_last_error\"] = time.time()\n            if self.site.connection_server.has_internet:\n                self.stats[tracker][\"num_error\"] += 1\n            self.stats[tracker][\"num_request\"] += 1\n            global_stats[tracker][\"num_request\"] += 1\n            if self.site.connection_server.has_internet:\n                global_stats[tracker][\"num_error\"] += 1\n            self.updateWebsocket(tracker=\"error\")\n            return False\n","sourceCodeStart":185,"sourceCodeEnd":221,"githubUrl":"https://github.com/HelloZeroNet/ZeroNet/blob/454c0b2e7e000fda7000cba49027541fbf327b96/src/Site/SiteAnnouncer.py#L185-L221","documentation":"Dispatch error in SiteAnnouncer.announceTracker: getTrackerHandler returned no handler for address_parts['protocol'], meaning the tracker URL uses a scheme the announcer does not implement (e.g. a typo'd or unsupported protocol string). The input at fault is the tracker address's protocol part.","triggerScenarios":"Thrown at src/Site/SiteAnnouncer.py:203 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use only supported tracker protocols (http/https/udp) in trackers.json","Skip trackers with unknown protocols and continue announcing to the remaining trackers","Catch the error per-tracker so one bad tracker address does not abort the whole announce loop"],"exampleFix":null,"handlingStrategy":"validation","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"}