]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add ClientConfig.AcceptPeerConnections
authorMatt Joiner <anacrolix@gmail.com>
Fri, 18 Jun 2021 04:59:20 +0000 (14:59 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 21 Jun 2021 02:14:01 +0000 (12:14 +1000)
client.go
config.go

index a8d93319def3ff36a07efd1ac6db926a02cbba9f..dc2448076a14fa95783cbef253639e882d3b7c01 100644 (file)
--- a/client.go
+++ b/client.go
@@ -248,7 +248,9 @@ func NewClient(cfg *ClientConfig) (cl *Client, err error) {
                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)
+                       }
                }
        }
 
@@ -322,12 +324,14 @@ func (cl *Client) Listeners() []Listener {
 // 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)
index b687f05de5426d064167fd528cc04a6093ec3214..b952ca95c5eb138570c208a49a3c0d5c83f04b79 100644 (file)
--- a/config.go
+++ b/config.go
@@ -133,6 +133,8 @@ type ClientConfig struct {
        // 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)
@@ -180,10 +182,11 @@ func NewDefaultClientConfig() *ClientConfig {
                        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 }