* perf: use scrape to know when a swarm is all-seeds
For private torrents, the tracker is the sole source of peers. So when a
private torrent's tracker responds that there are 0 leechers, we can use
that information to mark the entire swarm as seeders and to not initiate
connections to those peers if we are seeding. This can help seedboxes to
more efficiently pick which swarms to prioritize.
This strategy is not used on public torrents, since new seeder-to-seeder
connections can be useful there for pex.
This PR changes tr_peerMgrAddPex() to (1) remove tr_atom.seedProbability
field (which was not as robust as intended) and (2) add batches of peers
instead of a single peer.
* fix: only use all-seeds check for private torrents
* Update enabled complier warnings
* Convert to Modern Objective-C syntax using Xcode's tool
* Convert to modern objc syntax manually, fix some PR issues
* Remove unnecessary parentheses
* Use property syntax for all custom properties
* Use property syntax for all system properties
* Fix erroneously autoreleased values
* Revert VDKQueue to old objc syntax
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
Co-authored-by: Mitch Livingston <livings124@mac.com>
Since there is no way to mark parameters as [potentially] unused in
standard C and when using MSVC compiler, use the widely accepted
cast-to-void approach instead.
For some reason, Mac client is the only project that references
libtransmission files as if they were a part of its own project, and
inconsistently so. Make the include/import style uniform an in line with
other projects.
Adjust Mac client include directory settings a bit along the way.
Add RPCUseHostWhitelist (maps to rpc-host-whitelist-enabled) and
RPCHostWhitelist (maps to rpc-host-whitelist) keys loading from the plist
to allow adjustment via `defaults` command.