Distributed Search just got a lot better at finding things, and a lot more reliable at starting up.

What’s new
⬇️ frostwire-release-3.2.1-build-777.apk
Browse what other people share. Long-press a Distributed Search result and choose Browse Shared Torrents to see everything that person is sharing, then download straight from them. The first-run wizard now explains that seeding a torrent makes it discoverable. Browsing is on by default for torrents you are actively seeding (never your download history); you can turn it off in the wizard or in Settings > Distributed Search.
Smarter, faster search. Peers now tell the network what kind of content they hold, so your search goes to the people most likely to have it instead of random ones. Rare files turn up more reliably, even from phones and computers that are not acting as relays. Unreachable peers are forgotten instead of being retried forever, and Distributed Search is ready sooner after you open the app.
Clearer IceBridge status. Settings > Distributed Search now tells you what is actually happening: which startup step it is on, what went wrong if it failed, and a live countdown before the next automatic retry. It never gets stuck on “Starting…” without a reason.
Fixes you may notice
- Distributed Search starts on release builds. A code-shrinking bug could stop the IceBridge networking layer from starting at all on installed apps. That is fixed, and the build now checks for it.
- Downloads from the Peer catalog use the exact peer you picked, and failed or rejected starts (including VPN restrictions) are shown instead of silently disappearing.
- Several phones on the same Wi-Fi no longer fight over one network port.
- Transfers update right away when a torrent moves from Checking to Seeding, and when you come back from the details screen.
- Only real audio files open in the music player; videos open with your system chooser.
- Search results with accented or non-Latin names no longer go missing or appear twice.
- The background service stops cleanly instead of crashing, and VPN or Wi-Fi-only rules no longer override a torrent you paused yourself.
Powered by jlibtorrent 2.0.12.9.
Full changelog
- new:You can now browse the torrents a peer shares — long-press a Distributed search result whose holder allows crawling (“Browse Shared Torrents”) to list everything that peer is sharing and download any of it straight from that peer
- new:Distributed search routes to the peers that actually hold the content — nodes announce a compact keyword fingerprint and requests are forwarded to likely holders with a small bounded fan-out instead of random peers, so rare results are found reliably and faster
- fix:Distributed search now finds torrents shared by peers that do not act as relays (leaf nodes) — forwarders were dropping their published keyword fingerprint, so those torrents only showed up by luck; the fingerprint is now honored when routing
- fix:Release builds retain Netty’s dynamically accessed Android memory-fence fallback, preventing IceBridge startup from failing after code shrinking; release DEX verification gates packaging
- fix:IceBridge settings show actual startup phases, timeout and failure status, and a live retry countdown; startup attempts are coalesced, late attempts cannot publish, and failed starts retry at most three times without bypassing cleanup or network policy
- new:Seeding is publishing — the first-run wizard explains that seeding a torrent makes it discoverable on the BitTorrent network, and lets you opt out (on by default) of having the torrents you are actively seeding browsable by the network’s crawlers
- fix:The crawler sharing setting now gates both mesh browsing and DHT catalog publication; only active non-private seeds are browsable, and opting out withdraws the previous catalog without disabling ordinary distributed search
- fix:Only torrents you are actively seeding are shared with catalog crawlers — downloaded history that is not seeding is no longer published
- fix:Distributed search becomes available sooner after startup — peer discovery, signed DHT announcements, and mesh registration now begin immediately in parallel rather than blocking the search UI; resume recovery uses one timeout budget
- fix:Distributed search and the relay stay responsive under heavy search traffic — packet processing is handed off the socket event loop, response delivery runs on a bounded lane, and concurrent torrent-metadata fetches are capped
- new:Peers keep an up-to-date list of reachable IceBridge nodes and never query unreachable ones — nodes that stop answering (directly or through a relay) are removed from the local list and evicted instead of being retried forever
- fix:IceBridge UDP ports now default to automatic selection so multiple devices behind one router do not all claim port 6889; existing default settings are upgraded once, custom ports remain supported, and announcements use the actual bound port
- fix:Peer catalog downloads preserve the selected holder’s identity, show rejected starts and VPN restrictions, and keep failed metadata transfers visible as errors instead of silently removing them
- new:IceBridge participates as a full node (BOTH) by default, with a separate relay-participation switch and a node setting that restarts the relay stack when changed
- new:Search progress now shows IceBridge status — “Distributed Search · N peers contacted” with starting / not-running hints, translated to every supported language
- fix:Warming the mesh on relay startup lets a fresh install find peers without waiting for the first discovery tick
- fix:Shared hybrid torrent indexing consistently uses the metadata v1 hash and removes only proven truncated-v2 aliases after the canonical row is stored
- fix:The local search index preserves FTS rowids across reindexing and repairs triggers, fixing missing or duplicated results with unicode names
- fix:VPN and seeding preference toggles suspend torrents for policy without overwriting an explicit user pause, and the transfer list is no longer cleared on reset
- fix:The engine’s foreground service stops cleanly when promotion fails instead of crashing with RemoteServiceException
- fix:Network status changes are no longer rebroadcast, and notifications fire only for real Wi-Fi/mobile/VPN transport changes
- fix:Transfers rows now react to libtorrent state-change alerts, so Checking-to-Seeding updates do not wait for the next periodic list refresh
- fix:Returning from transfer details immediately refreshes the transfers list so the row reflects the latest Checking, Downloading, or Seeding state
- fix:Only real audio files open in the music player; video containers (webm/mp4/mkv/…) open with the system chooser
- fix:Distributed Search settings refresh automatically while the screen is visible
- fix:Deselecting every web search engine leaves Distributed Search enabled and no longer re-enables Archive.org at startup
- fix:Release shrinking ignores optional Netty codec, JFR, and LDAP classes that Android does not ship, so the release build can complete
