.gitignore | 2 ++ config.go | 17 ++++++++++------- torrent.go | 2 +- diff --git a/.gitignore b/.gitignore index d92c6d5bfd4a881ef48dd9bfd83aaee1415bcb21..0c15585de6c8e7a2a3445e788436ba04dac4dc66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea *-run.gob .envrc* +.DS_Store +go.work* \ No newline at end of file diff --git a/config.go b/config.go index 0c029a7e2c3e4ba0b2bf98008ebaaad1e9225fb0..e2d0ea1ebec230cce1c7fa50e67ff5fc88f8006d 100644 --- a/config.go +++ b/config.go @@ -188,6 +188,8 @@ // ICE, such as STUN and TURN servers. ICEServers []string DialRateLimiter *rate.Limiter + + PieceHashersPerTorrent int // default: 2 } func (cfg *ClientConfig) SetListenAddr(addr string) *ClientConfig { @@ -225,13 +227,14 @@ HeaderObfuscationPolicy: HeaderObfuscationPolicy{ Preferred: true, RequirePreferred: false, }, - CryptoSelector: mse.DefaultCryptoSelector, - CryptoProvides: mse.AllSupportedCrypto, - ListenPort: 42069, - Extensions: defaultPeerExtensionBytes(), - AcceptPeerConnections: true, - MaxUnverifiedBytes: 64 << 20, - DialRateLimiter: rate.NewLimiter(10, 10), + CryptoSelector: mse.DefaultCryptoSelector, + CryptoProvides: mse.AllSupportedCrypto, + ListenPort: 42069, + Extensions: defaultPeerExtensionBytes(), + AcceptPeerConnections: true, + MaxUnverifiedBytes: 64 << 20, + DialRateLimiter: rate.NewLimiter(10, 10), + PieceHashersPerTorrent: 2, } cc.DhtStartingNodes = func(network string) dht.StartingNodesGetter { return func() ([]dht.Addr, error) { return dht.GlobalBootstrapAddrs(network) } diff --git a/torrent.go b/torrent.go index 5f6ddf394e5684282bf4a520f7e9c5583aba6256..8b4745218864d81bb19ffda48140aa245f4cc044 100644 --- a/torrent.go +++ b/torrent.go @@ -2251,7 +2251,7 @@ }) } func (t *Torrent) tryCreateMorePieceHashers() { - for !t.closed.IsSet() && t.activePieceHashes < 2 && t.tryCreatePieceHasher() { + for !t.closed.IsSet() && t.activePieceHashes < t.cl.config.PieceHashersPerTorrent && t.tryCreatePieceHasher() { } }