Matt Joiner
55b178a8ca
Export Torrent.UseSources
2022-03-15 13:42:00 +11:00
Matt Joiner
39af2fe8f2
Merge branch 'http-proxying'
2022-03-15 12:41:22 +11:00
Matt Joiner
ec2b1b2073
Support banning webseeds
2022-03-11 14:05:31 +11:00
Matt Joiner
162cef5d1b
When banning an IP drop peers that match
2022-03-11 13:59:47 +11:00
Matt Joiner
cb1291d565
Separate torrent sources source file
2022-02-25 19:59:16 +11:00
Matt Joiner
d06f990b81
Use HTTP proxy config for torrent sources
2022-02-25 19:59:16 +11:00
Matt Joiner
716dc55321
Fix race in MergeSpec using DisableInitialPieceCheck
2022-02-25 19:55:26 +11:00
FIGBERT
7d41b9b21c
Pass client logger to anacrolix/go-libutp sockets ( #722 )
...
* Update anacrolix/go-libutp (v1.1.0 -> v1.2.0)
* Pass client logger to anacrolix/go-libutp
* Pass logger instead of option
The project now compiles properly when CGO is not enabled.
Additionally, the new argument (now log.Logger instead of
utp.NewSocketOpt) is now required. The tests have been updated to match
this change, and now pass logger.Default to NewUtpSocket.
* Correct function signature of NewUtpSocket
2022-02-15 16:18:32 +11:00
Matt Joiner
a324fbfee3
Make use of the lazylog branch of anacrolix/log
...
This avoids significant allocations and overhead.
2022-01-31 17:22:36 +11:00
Matt Joiner
f7494791d0
Reduce some logging
2021-12-27 22:06:52 +11:00
Matt Joiner
1bae62fd22
Dynamic outbound max requests
...
This might be one solution to https://github.com/anacrolix/torrent/issues/698 .
2021-12-24 08:55:57 +11:00
Matt Joiner
bdb33ef9f7
gofumpt -extra
2021-12-23 14:00:00 +11:00
martin
b6cc93c0be
* set proxy of websocket tracker to the proxy used by client config
2021-12-16 16:04:59 +11:00
Matt Joiner
1bc84e316f
Don't group Torrent piece request orders without a storage capacity together
2021-12-12 18:35:02 +11:00
Matt Joiner
94bb5d40ba
Implement piece request ordering with retained state
2021-12-12 18:35:01 +11:00
Matt Joiner
8dc897d4a2
Fix races using resources on Close
2021-12-12 15:01:50 +11:00
Matt Joiner
69f3b6064e
Don't use the Client's IP blocklist after the Client is closed
...
Fixes a segfault due to using a memory mapped blocklist in confluence.
2021-12-12 15:01:50 +11:00
Matt Joiner
a9373fc8fd
Fix minimum peer extensions error message
2021-12-03 20:36:50 +11:00
Matt Joiner
0f81e0011f
Avoid calling net.Conn methods with the Client mutex locked
...
The utp firewall callback might want to use it. I can't think of a better way to determine with an incoming connection request should be blocked.
2021-11-17 14:00:50 +11:00
Matt Joiner
a90ae5aed4
Pass HTTP Proxy config into webseeding HTTP client
2021-11-12 14:16:14 +11:00
Matt Joiner
1071e261e1
Remove unused Client.updateRequests
2021-11-12 13:55:43 +11:00
Matt Joiner
c6ee03f449
gofumpt
2021-11-08 14:47:01 +11:00
Matt Joiner
f86af21cd2
Improve dht bootstrap stats logging
2021-11-05 09:30:25 +11:00
Matt Joiner
c7ff32f01c
Export addTorrentOpts
...
Now I see what the lint was complaining about.
2021-11-04 20:00:31 +11:00
Matt Joiner
3d49a29288
Support minimum peer extensions
2021-10-25 20:52:44 +11:00
Matt Joiner
506996d038
Fix panic in update requests timer func on closed conn
2021-10-25 16:16:06 +11:00
Matt Joiner
ff3c186396
Add low requests check
...
This is an optimization for webseeds, which have 10 synchronous request routines, and if the request count dips below 10, some sit idle. There is probably something similar to be done with PeerConns, which won't update until there are zero requests, but there there is a timer to refresh updates, and the queues are very long (typically 512-2048).
2021-10-21 10:48:43 +11:00
Matt Joiner
8eec0b665e
Update webseeds for peer requesting
2021-10-21 10:28:57 +11:00
Matt Joiner
aca3924c5e
Don't panic on request refresh if there are no existing requests
2021-10-19 14:08:56 +11:00
Matt Joiner
ccce2dba13
Improvements to request refreshing
2021-10-19 14:08:56 +11:00
Matt Joiner
1201ccc53b
Refresh requests after a second of no updates
2021-10-19 14:08:56 +11:00
Matt Joiner
181cbd3e52
Add expvar for successful peer wire protocol handshake peer reserved bytes
2021-10-19 14:08:56 +11:00
Matt Joiner
529aaa9b1f
Use roaring bitmap for pending pieces
...
Also makes a significant optimization for peerHasWantedPieces possible.
2021-10-19 14:08:56 +11:00
Matt Joiner
16c571b58b
Add pprof labels for request updates and remove Client-wide requester
2021-10-19 14:08:13 +11:00
Matt Joiner
58cc0f3d87
Ending a conn because we don't like its ID is not an error
...
(cherry picked from commit 2a5ba846cef9b4e035b3b88698f3e7f7d9d79251)
2021-10-19 14:07:40 +11:00
Matt Joiner
d19079e698
Only allow chunk size to be set for new Torrents
...
(cherry picked from commit 09e73e9fce139cd78da48c442e8610501b6fd26b)
2021-10-19 14:04:07 +11:00
Simon Kirsten
637045c19a
Add DisableInitialPieceCheck option ( #677 )
2021-10-11 11:33:40 +11:00
Matt Joiner
f47a12bd32
Return errors from Client.Close
2021-10-07 13:31:08 +11:00
Matt Joiner
9720fd576d
Update chansync
2021-10-07 11:45:09 +11:00
Matt Joiner
4ca47eb358
Add ClientConfig.AlwaysWantConns
2021-09-21 13:04:51 +10:00
Matt Joiner
510877ea43
Reduce the diff to master and add peerRequesting feature const
2021-09-20 15:09:28 +10:00
Matt Joiner
21358ba458
Do peer requests separately for each peer
2021-09-18 20:34:14 +10:00
Matt Joiner
72eb52bb8e
goimports doing its thing
2021-09-18 18:54:54 +10:00
YenForYang
29638d9e5d
Create default constructor for Client ( #567 )
...
Allow for certain values to always be properly initialized on construction -- namely the maps for now. I'm currently working on a change that requires a baseline constructor; this change would make the use of `chansync.BroadcastCond` and `chansync.SetOnce` obsolete -- i.e. one can have channel members without worrying about proper initialization/destruction of a `chan struct{}`.
As for why `makeClient` returns a value instead of a pointer: returning a value gives us more options -- you can always take a pointer from a value later on cheaply, and have things moved to the heap if they weren't already. The same can't be said about getting a value back from a pointer. GC also could potentially have less work to do. Plus I personally find ownership to be an important concept (semi-borrowed from rust) -- use of values make ownership clear.
2021-09-14 23:01:20 +10:00
YenForYang
134eea8418
Fix usages of eachListener() and make inlineable ( #599 )
2021-09-13 21:35:51 +10:00
YenForYang
5c440e8929
Simplify (*Torrent).gotMetainfo ( #581 )
2021-09-13 11:41:11 +10:00
Matt Joiner
79ad5e4676
Don't call Client onClose handlers until torrent storages are closed
2021-09-11 11:39:33 +10:00
Matt Joiner
7378d50a3c
Fix Torrent.Drop to wait for storage close without client lock
2021-09-11 11:39:33 +10:00
Matt Joiner
35064425eb
go fmt ./...
2021-09-09 22:51:24 +10:00
YenForYang
1fc6093383
useTorrentSources: fix http request resource leak ( #562 )
2021-09-09 22:39:12 +10:00