if peerNetworkEnabled(parseNetworkString(s.Addr().Network()), cl.config) {
cl.dialers = append(cl.dialers, s)
cl.listeners = append(cl.listeners, s)
- go cl.acceptConnections(s)
+ if cl.config.AcceptPeerConnections {
+ go cl.acceptConnections(s)
+ }
}
}
// yourself.
func (cl *Client) AddListener(l Listener) {
cl.listeners = append(cl.listeners, l)
- go cl.acceptConnections(l)
+ if cl.config.AcceptPeerConnections {
+ go cl.acceptConnections(l)
+ }
}
func (cl *Client) firewallCallback(net.Addr) bool {
cl.rLock()
- block := !cl.wantConns()
+ block := !cl.wantConns() || !cl.config.AcceptPeerConnections
cl.rUnlock()
if block {
torrent.Add("connections firewalled", 1)
// bit of a special case, since a peer could also be useless if they're just not interested, or
// we don't intend to obtain all of a torrent's data.
DropMutuallyCompletePeers bool
+ // Whether to accept peer connections at all.
+ AcceptPeerConnections bool
// OnQuery hook func
DHTOnQuery func(query *krpc.Msg, source net.Addr) (propagate bool)
Preferred: true,
RequirePreferred: false,
},
- CryptoSelector: mse.DefaultCryptoSelector,
- CryptoProvides: mse.AllSupportedCrypto,
- ListenPort: 42069,
- Extensions: defaultPeerExtensionBytes(),
+ CryptoSelector: mse.DefaultCryptoSelector,
+ CryptoProvides: mse.AllSupportedCrypto,
+ ListenPort: 42069,
+ Extensions: defaultPeerExtensionBytes(),
+ AcceptPeerConnections: true,
}
//cc.ConnTracker.SetNoMaxEntries()
//cc.ConnTracker.Timeout = func(conntrack.Entry) time.Duration { return 0 }