]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Merge branch 'go1.18'
authorMatt Joiner <anacrolix@gmail.com>
Thu, 17 Mar 2022 04:16:04 +0000 (15:16 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 17 Mar 2022 04:16:04 +0000 (15:16 +1100)
1  2 
client.go
go.mod
go.sum
torrent.go

diff --cc client.go
index 4b6f1a24b12162587943afca64bbaa48b9f1a2ce,ad20ef2be2c7ca4c36330147b5a46732943885b1..d5f96c0ee33d7b801065902d8d7f10eedc9aecdb
+++ b/client.go
@@@ -20,8 -22,10 +22,9 @@@ import 
        "github.com/anacrolix/chansync/events"
        "github.com/anacrolix/dht/v2"
        "github.com/anacrolix/dht/v2/krpc"
+       "github.com/anacrolix/generics"
        "github.com/anacrolix/log"
        "github.com/anacrolix/missinggo/perf"
 -      "github.com/anacrolix/missinggo/pubsub"
        "github.com/anacrolix/missinggo/v2"
        "github.com/anacrolix/missinggo/v2/bitmap"
        "github.com/anacrolix/missinggo/v2/pproffd"
@@@ -1187,9 -1194,10 +1195,11 @@@ func (cl *Client) newTorrentOpt(opts Ad
                webSeeds:     make(map[string]*Peer),
                gotMetainfoC: make(chan struct{}),
        }
+       t.smartBanCache.Hash = sha1.Sum
+       t.smartBanCache.Init()
        t.networkingEnabled.Set()
        t.logger = cl.logger.WithContextValue(t).WithNames("torrent", t.infoHash.HexString())
 +      t.sourcesLogger = t.logger.WithNames("sources")
        if opts.ChunkSize == 0 {
                opts.ChunkSize = defaultChunkSize
        }
diff --cc go.mod
index 4aa4994419ff5900ae35a2190fed339d4f53f40c,06f4b98e5572974be23becd83a6ed8a4644c53e6..2b67f8596e246675fe931c467f745608ba092dc4
--- 1/go.mod
--- 2/go.mod
+++ b/go.mod
@@@ -3,21 -3,22 +3,23 @@@ module github.com/anacrolix/torren
  go 1.18
  
  require (
 +      crawshaw.io/sqlite v0.3.3-0.20210127221821-98b1f83c5508
        github.com/RoaringBitmap/roaring v0.9.4
+       github.com/ajwerner/btree v0.0.0-20211201061316-91c8b66ad617
        github.com/alexflint/go-arg v1.4.2
 -      github.com/anacrolix/args v0.4.1-0.20211104085705-59f0fe94eb8f
 +      github.com/anacrolix/args v0.5.0
        github.com/anacrolix/chansync v0.3.0
 -      github.com/anacrolix/dht/v2 v2.15.2-0.20220123034220-0538803801cb
 +      github.com/anacrolix/dht/v2 v2.16.2-0.20220311024416-dd658f18fd51
        github.com/anacrolix/envpprof v1.1.1
        github.com/anacrolix/fuse v0.2.0
 -      github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d
 -      github.com/anacrolix/go-libutp v1.1.0
++      github.com/anacrolix/generics v0.0.0-20220217222028-44932cf46edd
 +      github.com/anacrolix/go-libutp v1.2.0
        github.com/anacrolix/log v0.13.1
        github.com/anacrolix/missinggo v1.3.0
        github.com/anacrolix/missinggo/perf v1.0.0
 -      github.com/anacrolix/missinggo/v2 v2.5.2
 +      github.com/anacrolix/missinggo/v2 v2.5.4-0.20220317032254-8c5ea4947a0b
-       github.com/anacrolix/multiless v0.2.0
+       github.com/anacrolix/multiless v0.2.1-0.20211218050420-533661eef5dc
 -      github.com/anacrolix/squirrel v0.4.0
 +      github.com/anacrolix/squirrel v0.4.1-0.20220122230132-14b040773bac
        github.com/anacrolix/sync v0.4.0
        github.com/anacrolix/tagflag v1.3.0
        github.com/anacrolix/upnp v0.1.3-0.20220123035249-922794e51c96
        github.com/pion/webrtc/v3 v3.1.24-0.20220208053747-94262c1b2b38
        github.com/pkg/errors v0.9.1
        github.com/stretchr/testify v1.7.0
+       github.com/tidwall/btree v0.7.2-0.20211211132910-4215444137fc
        go.etcd.io/bbolt v1.3.6
        golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
 -      zombiezen.com/go/sqlite v0.8.0
  )
  
  require (
-       github.com/alexflint/go-scalar v1.0.0 // indirect
-       github.com/anacrolix/confluence v1.9.0 // indirect
+       github.com/alexflint/go-scalar v1.1.0 // indirect
 -      github.com/anacrolix/confluence v1.9.0 // indirect
        github.com/anacrolix/mmsg v1.0.0 // indirect
        github.com/anacrolix/stm v0.3.0 // indirect
        github.com/benbjohnson/immutable v0.3.0 // indirect
diff --cc go.sum
index a0f9b8cffa47c68e4a285fff56220653f325e7c0,63f6c4f6b41af4a3abfda16ac413404ccb23d7af..8e6a3634f6c1563aa262d979d43acbc494858fe5
--- 1/go.sum
--- 2/go.sum
+++ b/go.sum
@@@ -21,20 -20,17 +23,15 @@@ github.com/alecthomas/units v0.0.0-2015
  github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
  github.com/alexflint/go-arg v1.4.2 h1:lDWZAXxpAnZUq4qwb86p/3rIJJ2Li81EoMbTMujhVa0=
  github.com/alexflint/go-arg v1.4.2/go.mod h1:9iRbDxne7LcR/GSvEr7ma++GLpdIU1zrghf2y2768kM=
- github.com/alexflint/go-scalar v1.0.0 h1:NGupf1XV/Xb04wXskDFzS0KWOLH632W/EO4fAFi+A70=
  github.com/alexflint/go-scalar v1.0.0/go.mod h1:GpHzbCOZXEKMEcygYQ5n/aa4Aq84zbxjy3MxYW0gjYw=
 -github.com/anacrolix/args v0.4.1-0.20211104085705-59f0fe94eb8f h1:NEHQxPja+2pvaFtFMUC4k14X1kwInDtX2DSZUNcxJKQ=
 -github.com/anacrolix/args v0.4.1-0.20211104085705-59f0fe94eb8f/go.mod h1:41JBnF8sKExNVLHPkCdL74jkZc3dSxAkGsk1TuKOUFI=
+ github.com/alexflint/go-scalar v1.1.0 h1:aaAouLLzI9TChcPXotr6gUhq+Scr8rl0P9P4PnltbhM=
+ github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
 +github.com/anacrolix/args v0.5.0 h1:bZCkbtn4QMB4ow2g34R/oqTFwrI6IojysKop6+ZcOSs=
 +github.com/anacrolix/args v0.5.0/go.mod h1:Fj/N2PehEwTBE5t/V/9xgTcxDkuYQ+5IBoFw/8gkldI=
  github.com/anacrolix/chansync v0.3.0 h1:lRu9tbeuw3wl+PhMu/r+JJCRu5ArFXIluOgdF0ao6/U=
  github.com/anacrolix/chansync v0.3.0/go.mod h1:DZsatdsdXxD0WiwcGl0nJVwyjCKMDv+knl1q2iBjA2k=
--github.com/anacrolix/confluence v1.9.0 h1:7WrWktoDw7P4uo1bzgaA8FFesvc7NsTp37sAsG54XlE=
--github.com/anacrolix/confluence v1.9.0/go.mod h1:O5uS+WVgip+3SOcV1K7E/jE3m4DtK7Jk6QJTnU2VS5s=
--github.com/anacrolix/dht/v2 v2.15.2-0.20220123034220-0538803801cb h1:c4e9XiiT0P3uMkONTkpzLVGxz3if5fIn6UB4HTrVlc0=
--github.com/anacrolix/dht/v2 v2.15.2-0.20220123034220-0538803801cb/go.mod h1:GCylVI6WTvbxvhY7pBoHiE5dmjfDWkhqbobDpjND01A=
- github.com/anacrolix/dht/v2 v2.16.1 h1:Q/mL3wP+zZwgo0B3W21JDY3X51KE3xwv3UUjqTf4VJY=
- github.com/anacrolix/dht/v2 v2.16.1/go.mod h1:7FOQ1dkRmAMb0LQM8T0hGXc9bQ4RD2/0CB3wcVyBxhk=
 +github.com/anacrolix/dht/v2 v2.16.2-0.20220311024416-dd658f18fd51 h1:issCwqC43gQ7n0gg9rn0EeVYXnQMI7vlnWub4oidtlU=
 +github.com/anacrolix/dht/v2 v2.16.2-0.20220311024416-dd658f18fd51/go.mod h1:osiyaNrMLG9dw7wUtVMaII/NdCjlXeHjUcYzXnmop68=
  github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c=
  github.com/anacrolix/envpprof v1.0.0/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c=
  github.com/anacrolix/envpprof v1.1.0/go.mod h1:My7T5oSqVfEn4MD4Meczkw/f5lSIndGAKu/0SM/rkf4=
@@@ -42,11 -38,12 +39,13 @@@ github.com/anacrolix/envpprof v1.1.1 h1
  github.com/anacrolix/envpprof v1.1.1/go.mod h1:My7T5oSqVfEn4MD4Meczkw/f5lSIndGAKu/0SM/rkf4=
  github.com/anacrolix/fuse v0.2.0 h1:pc+To78kI2d/WUjIyrsdqeJQAesuwpGxlI3h1nAv3Do=
  github.com/anacrolix/fuse v0.2.0/go.mod h1:Kfu02xBwnySDpH3N23BmrP3MDfwAQGRLUCj6XyeOvBQ=
 -github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d h1:hKdj31gsNwxan3Lr4S5N1wXQI+0pMnX6/qZt75GSq7U=
 -github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d/go.mod h1:SommN0/3j+jrAnjopAZfqkREMGw59ELwloDcx6Y0KLA=
 -github.com/anacrolix/go-libutp v1.1.0 h1:89XK+0NBTaKgSoG/v5OfDK0yoyrt2HInfg46I1BaT2E=
 -github.com/anacrolix/go-libutp v1.1.0/go.mod h1:so9zroOUhFPGnIkddyflaCCl+xdTsRSq97/AOQ2/Hjk=
++github.com/anacrolix/generics v0.0.0-20220217222028-44932cf46edd h1:u0sIIPDd4zM287UxlhCtIJURZyYsPQQAyZGBaO0nAy0=
++github.com/anacrolix/generics v0.0.0-20220217222028-44932cf46edd/go.mod h1:SommN0/3j+jrAnjopAZfqkREMGw59ELwloDcx6Y0KLA=
 +github.com/anacrolix/go-libutp v1.2.0 h1:sjxoB+/ARiKUR7IK/6wLWyADIBqGmu1fm0xo+8Yy7u0=
 +github.com/anacrolix/go-libutp v1.2.0/go.mod h1:RrJ3KcaDcf9Jqp33YL5V/5CBEc6xMc7aJL8wXfuWL50=
  github.com/anacrolix/log v0.3.0/go.mod h1:lWvLTqzAnCWPJA08T2HCstZi0L1y2Wyvm3FJgwU9jwU=
  github.com/anacrolix/log v0.6.0/go.mod h1:lWvLTqzAnCWPJA08T2HCstZi0L1y2Wyvm3FJgwU9jwU=
 +github.com/anacrolix/log v0.10.0/go.mod h1:s5yBP/j046fm9odtUTbHOfDUq/zh1W8OkPpJtnX0oQI=
  github.com/anacrolix/log v0.10.1-0.20220123034749-3920702c17f8/go.mod h1:GmnE2c0nvz8pOIPUSC9Rawgefy1sDXqposC2wgtBZE4=
  github.com/anacrolix/log v0.13.1 h1:BmVwTdxHd5VcNrLylgKwph4P4wf+5VvPgOK4yi91fTY=
  github.com/anacrolix/log v0.13.1/go.mod h1:D4+CvN8SnruK6zIFS/xPoRJmtvtnxs+CSfDQ+BFxZ68=
@@@ -68,10 -64,10 +67,10 @@@ github.com/anacrolix/missinggo/v2 v2.5.
  github.com/anacrolix/mmsg v0.0.0-20180515031531-a4a3ba1fc8bb/go.mod h1:x2/ErsYUmT77kezS63+wzZp8E3byYB0gzirM/WMBLfw=
  github.com/anacrolix/mmsg v1.0.0 h1:btC7YLjOn29aTUAExJiVUhQOuf/8rhm+/nWCMAnL3Hg=
  github.com/anacrolix/mmsg v1.0.0/go.mod h1:x8kRaJY/dCrY9Al0PEcj1mb/uFHwP6GCJ9fLl4thEPc=
- github.com/anacrolix/multiless v0.2.0 h1:HtGBBOQcHaJM59RP3ysITId7AMIgiNF4xJucaFh14Ms=
- github.com/anacrolix/multiless v0.2.0/go.mod h1:TrCLEZfIDbMVfLoQt5tOoiBS/uq4y8+ojuEVVvTNPX4=
+ github.com/anacrolix/multiless v0.2.1-0.20211218050420-533661eef5dc h1:K047jUtd0Xv4SEpv/5DoBgDvj4ZNpT1SOVtMlFpRrh0=
+ github.com/anacrolix/multiless v0.2.1-0.20211218050420-533661eef5dc/go.mod h1:TrCLEZfIDbMVfLoQt5tOoiBS/uq4y8+ojuEVVvTNPX4=
 -github.com/anacrolix/squirrel v0.4.0 h1:MOxYwh0mD2rcEJT+N2tFj2Z3dBDrWn6kRxP4qsBxfyk=
 -github.com/anacrolix/squirrel v0.4.0/go.mod h1:dJyE7VefQvX0KAKMkOQDGOVEs91a+LvXQ2BjEKl/DIw=
 +github.com/anacrolix/squirrel v0.4.1-0.20220122230132-14b040773bac h1:eddZTnM9TIy3Z9ARLeDMlUpEjcs0ZdoFMXSG0ChAHvE=
 +github.com/anacrolix/squirrel v0.4.1-0.20220122230132-14b040773bac/go.mod h1:YzgVvikMdFD441oTWlNG189bpKabO9Sbf3uCSVgca04=
  github.com/anacrolix/stm v0.2.0/go.mod h1:zoVQRvSiGjGoTmbM0vSLIiaKjWtNPeTvXUSdJQA4hsg=
  github.com/anacrolix/stm v0.3.0 h1:peQncJSNJtk1YBrFbW0DLKYqll+sa0kOk8EvXRcO+wA=
  github.com/anacrolix/stm v0.3.0/go.mod h1:spImf/rXwiAUoYYJK1YCZeWkpaHZ3kzjGFjwK5OStfU=
diff --cc torrent.go
index 8f50879c82e4d4411a6bacaca6720db49d67ec70,bbe57f6194c330aebd1c30f062bcf514a0f9e27a..f6be69782d40621632b4b97da248c16a14370729
@@@ -19,8 -20,10 +20,9 @@@ import 
        "github.com/anacrolix/chansync"
        "github.com/anacrolix/chansync/events"
        "github.com/anacrolix/dht/v2"
+       . "github.com/anacrolix/generics"
        "github.com/anacrolix/log"
        "github.com/anacrolix/missinggo/perf"
 -      "github.com/anacrolix/missinggo/pubsub"
        "github.com/anacrolix/missinggo/slices"
        "github.com/anacrolix/missinggo/v2"
        "github.com/anacrolix/missinggo/v2/bitmap"
@@@ -148,9 -150,7 +150,11 @@@ type Torrent struct 
        // Is On when all pieces are complete.
        Complete chansync.Flag
  
 +      // Torrent sources in use keyed by the source string.
 +      activeSources sync.Map
 +      sourcesLogger log.Logger
++      
+       smartBanCache smartBanCache
  }
  
  func (t *Torrent) selectivePieceAvailabilityFromPeers(i pieceIndex) (count int) {
@@@ -2315,11 -2367,12 +2379,12 @@@ func (t *Torrent) addWebSeed(url string
                        // requests mark more often, so recomputation is probably sooner than with regular peer
                        // conns. ~4x maxRequests would be about right.
                        PeerMaxRequests: 128,
-                       RemoteAddr:      remoteAddrFromUrl(url),
-                       callbacks:       t.callbacks(),
+                       // TODO: Set ban prefix?
+                       RemoteAddr: remoteAddrFromUrl(url),
+                       callbacks:  t.callbacks(),
                },
                client: webseed.Client{
 -                      HttpClient: t.cl.webseedHttpClient,
 +                      HttpClient: t.cl.httpClient,
                        Url:        url,
                        ResponseBodyWrapper: func(r io.Reader) io.Reader {
                                return &rateLimitedReader{