{"record":{"id":"bd5620a56537662f","repo":"HelloZeroNet/ZeroNet","slug":"udp-trackers-not-available-with-proxies","errorCode":null,"errorMessage":"Udp trackers not available with proxies","messagePattern":"Udp trackers not available with proxies","errorType":"exception","errorClass":"AnnounceError","httpStatus":null,"severity":"error","filePath":"plugins/AnnounceBitTorrent/AnnounceBitTorrentPlugin.py","lineNumber":51,"sourceCode":"        return trackers\n\n    def getTrackerHandler(self, protocol):\n        if protocol == \"udp\":\n            handler = self.announceTrackerUdp\n        elif protocol == \"http\":\n            handler = self.announceTrackerHttp\n        elif protocol == \"https\":\n            handler = self.announceTrackerHttps\n        else:\n            handler = super(SiteAnnouncerPlugin, self).getTrackerHandler(protocol)\n        return handler\n\n    def announceTrackerUdp(self, tracker_address, mode=\"start\", num_want=10):\n        s = time.time()\n        if config.disable_udp:\n            raise AnnounceError(\"Udp disabled by config\")\n        if config.trackers_proxy != \"disable\":\n            raise AnnounceError(\"Udp trackers not available with proxies\")\n\n        ip, port = tracker_address.split(\"/\")[0].split(\":\")\n        tracker = UdpTrackerClient(ip, int(port))\n        if helper.getIpType(ip) in self.getOpenedServiceTypes():\n            tracker.peer_port = self.fileserver_port\n        else:\n            tracker.peer_port = 0\n        tracker.connect()\n        if not tracker.poll_once():\n            raise AnnounceError(\"Could not connect\")\n        tracker.announce(info_hash=self.site.address_sha1, num_want=num_want, left=431102370)\n        back = tracker.poll_once()\n        if not back:\n            raise AnnounceError(\"No response after %.0fs\" % (time.time() - s))\n        elif type(back) is dict and \"response\" in back:\n            peers = back[\"response\"][\"peers\"]\n        else:\n            raise AnnounceError(\"Invalid response: %r\" % back)","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/HelloZeroNet/ZeroNet/blob/454c0b2e7e000fda7000cba49027541fbf327b96/plugins/AnnounceBitTorrent/AnnounceBitTorrentPlugin.py#L33-L69","documentation":"announceTrackerUdp raises AnnounceError when config.trackers_proxy is not \"disable\". UDP tracker traffic cannot be routed through the configured SOCKS/proxy support, so announcing over UDP while a proxy is enabled is rejected up front.","triggerScenarios":"Announcing to a udp:// tracker while the config has trackers_proxy set to anything other than \"disable\" (e.g. SOCKS5 proxy enabled for anonymity).","commonSituations":"Running Tribler with its proxy/anonymity features enabled (trackers_proxy = SOCKS5) while a torrent still contains udp:// trackers; users combining proxy mode with legacy UDP trackers.","solutions":["Set trackers_proxy = \"disable\" in config to allow UDP announces (loses proxy anonymity).","Replace udp:// trackers with http(s):// trackers that are supported under proxy mode.","Filter out UDP trackers before announcing when proxies are enabled."],"exampleFix":"# before\ntrackers_proxy = SOCKS5\n# after (to allow UDP announces)\ntrackers_proxy = disable","handlingStrategy":"try-catch","validationCode":"def can_announce_udp_with_proxy(config):\n    return getattr(config, 'trackers_proxy', 'disable') == 'disable'\n# call before announceTrackerUdp\n","typeGuard":null,"tryCatchPattern":"try:\n    self.announceTrackerUdp(tracker_address, mode)\nexcept AnnounceError as e:\n    if \"Udp trackers not available with proxies\" in str(e):\n        logger.warning(\"Skipping UDP announce while proxy is enabled\")\n    else:\n        raise","preventionTips":["Check config.trackers_proxy before attempting UDP announces.","Prefer HTTP(S) trackers when proxy/anonymity mode is active.","Filter udp:// trackers at torrent-add time when proxies are enabled."],"tags":["bittorrent","udp","proxy","announce"],"backgroundTag":"udp-incompatible-with-proxy","analyzedSha":"454c0b2e7e000fda7000cba49027541fbf327b96","analyzedAt":"2026-09-02T19:46:57.278Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}