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
YenForYang
719505a138
Drop xerrors and missinggo/slices dependency for Client ( #572 )
...
* Drop xerrors and missinggo/slices dependency for Client
Made `BadPeerIPs` inlineable since I changed `badPeerIPsLocked` anyway. Also eliminated an extra torrentsAsSlice copy since Go wasn't smart enough to figure it out.
2021-09-08 09:34:06 +10:00
Zilog8
ccb90f1252
Improve Closing ( #559 )
...
- Prevent double-closing in cmd/torrent
- Move async closing from storage to torrents, and wait on them to finish tidying up before returning/exiting.
2021-09-05 11:33:41 +10:00
Matt Joiner
175b826e73
Rework Reader waiting
2021-09-04 23:07:32 +10:00
YenForYang
f86355ac0b
Simplify dhtPort()
...
A similar case of `haveDhtServer`
2021-09-04 23:04:06 +10:00
YenForYang
d1c0b95a9c
Simplify haveDhtServers()
...
A bit too much functional programming, lol.
2021-09-03 20:41:01 +10:00
Matt Joiner
72c74f7800
Remove unused code
2021-08-19 16:06:46 +10:00
Matt Joiner
6b03f00093
Fix data race closing incoming PeerConn
2021-08-19 13:37:00 +10:00
Bora M. Alper
16176b762e
Add linter CI ( #542 )
...
* Add linter CI
Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make gosec CI ignore SHA1 and upload sarif
Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Fix formatting of source files
Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make go vet ignore unkeyed composite literals and fix other warnings
Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make staticcheck ignore unused methods and fix other warnings
Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Use golangci-lint
Signed-off-by: Bora M. Alper <bora@boramalper.org>
2021-08-16 11:11:31 +10:00
Matt Joiner
d42f2516a4
Increase request update interval if there's no signalling
2021-08-01 22:52:51 +10:00
Matt Joiner
555cb064dd
cmd/torrentfs: Fix panic on missing info
2021-08-01 21:38:35 +10:00
Matt Joiner
99f3e9ad3d
Reject accepted connections if we don't want conns
...
This prevents unnecessarily stalling peers dialling us if we have no intention to ever accept.
2021-06-23 12:41:25 +10:00
Matt Joiner
88d144e65e
Minor tidying
2021-06-21 13:00:20 +10:00
Matt Joiner
765edfa7cb
Expose DialFirst
2021-06-21 12:54:57 +10:00
Matt Joiner
15f8e77519
Add explicit metadata extension types
2021-06-21 12:14:06 +10:00
Matt Joiner
a01b451857
Add ClientConfig.AcceptPeerConnections
2021-06-21 12:14:01 +10:00
Matt Joiner
af1ca91e04
Remove conntrack, expose Torrent.AnnounceToDht, ClientConfig.PeriodicallyAnnounceTorrentsToDht
2021-06-21 12:13:53 +10:00
Matt Joiner
7d9e2b18d6
Extract chansync to github.com/anacrolix/chansync
2021-06-07 13:01:40 +10:00
Matt Joiner
36f52d7a14
Apply next request state asynchronously
2021-06-07 13:01:40 +10:00
Matt Joiner
d37dea1f61
Move peerConnMsgWriter into its own file
2021-06-07 13:01:40 +10:00
Matt Joiner
24ceed61da
Break out peerConnWriter
2021-06-07 13:01:40 +10:00
Matt Joiner
95d808d3c5
Use rejiggered missinggo bitmap
2021-06-07 13:01:39 +10:00
Matt Joiner
86524214f5
Merge maxRequests into localClientReqq
2021-06-07 13:01:39 +10:00
Matt Joiner
0d4e566fc0
Extract request strategy stuff into a separate module
2021-06-07 13:01:39 +10:00
Matt Joiner
875ead3582
Reuse pieceRequestOrder slice
2021-06-07 13:01:39 +10:00
Matt Joiner
2d2456249a
Remove unused pieceRequestOrder in Client
2021-06-07 13:01:39 +10:00
Matt Joiner
9c9ba1aeac
PeerConn.post becomes PeerConn.write
2021-06-07 13:01:39 +10:00
Matt Joiner
56e2a8a3a6
Fix download rate, status output
2021-06-07 13:01:39 +10:00
Matt Joiner
0830589b0a
Pass tests with new full-client request strategy implementation
2021-06-07 13:01:39 +10:00
Matt Joiner
56e5d08eff
Log failure to complete metadata
2021-06-07 12:57:42 +10:00
Matt Joiner
47284cf426
Rename Torrent.{add,delete}Connection
2021-05-14 15:39:01 +10:00
Matt Joiner
305ba51dc2
Big logging cleanup to improve experience from README
2021-05-04 12:44:51 +10:00
Matt Joiner
cff461c898
Add ClientConfig.ConfigureAnacrolixDhtServer
2021-02-20 22:16:54 +11:00
Matt Joiner
456a2f7c5d
Expose more callbacks and Request and ChunkSpec
2021-01-28 14:23:22 +11:00
Matt Joiner
b5215ea7e8
Expose Peer.Network to replace Peer.RemoteAddr.Network
2021-01-25 15:49:48 +11:00
Matt Joiner
9f9953be52
Don't expose Peer network through RemoteAddr
2021-01-25 15:49:48 +11:00
Matt Joiner
27108bd2f7
Export Peer
2021-01-25 15:49:48 +11:00
Matt Joiner
b2fd53f4ce
Generalize internal/string-limiter Key type
2020-12-21 09:39:02 +11:00
Matt Joiner
ddd03362f8
Factor out internal/string_limiter
2020-12-17 12:22:02 +11:00
Matt Joiner
d713aaf280
Rework active announce limiter to reduce contention
2020-12-15 15:29:45 +11:00
Matt Joiner
0d40c4bac2
Read peer request data without Client lock
2020-11-16 16:37:11 +11:00
Matt Joiner
b020b8c2b6
Add support for the x.pe magnet link parameter
2020-11-16 16:37:11 +11:00
Matt Joiner
e6da640bb2
Tidy up doc, file names, naming
2020-11-09 10:56:45 +11:00
Matt Joiner
131037dd9f
Add the ReceiveEncryptedHandshakeSkeys callback
2020-11-05 13:28:45 +11:00
Matt Joiner
8088002ba6
Fix error handling for bad torrent adds with safe file handling
2020-10-15 16:03:43 +11:00
Matt Joiner
4a4cb5dc58
Ensure PeerConn._close is called for incoming connections
...
This fixes missing calls to PeerConnClosed callback.
2020-10-14 15:11:45 +11:00
Matt Joiner
6ed1062176
Fix some log levels
2020-10-12 17:12:34 +11:00
Matt Joiner
a9102abf1d
Tidy up some logging
2020-10-10 10:24:58 +11:00
Matt Joiner
3d7ac87e3b
Expose Client.ConnStats
2020-10-01 11:20:44 +10:00
Matt Joiner
a3827099c4
Limit simultaneous announces to the same URL
2020-10-01 10:43:10 +10:00
Matt Joiner
a2c7b384df
Limit half-open connections at the Client level
2020-09-30 16:56:27 +10:00
Matt Joiner
1cdae13700
Fix conn status string for WebRTC connections
2020-09-29 16:21:54 +10:00
Matt Joiner
9d0ea15044
Expose peer.RemoteAddr
2020-07-15 16:16:14 +10:00
Matt Joiner
7ee0fdafe3
Add some client callbacks
2020-07-15 16:16:14 +10:00
Matt Joiner
e81d8890dd
Don't filter context cancel errors
...
The caller thinks this means it succeeded, when it fact it was cancelled and it should interpret that appropriately.
2020-06-19 11:41:26 +10:00
Matt Joiner
62e7f29a0c
Fix panic in webseed request rejection logging
...
Also use a new helper in Logger to simplify things.
2020-06-04 11:51:17 +10:00
Maxb
a7689f52bd
Add DisallowDataDownload/Upload to TorrentSpec and small log cleanup
2020-06-04 10:36:56 +10:00
Matt Joiner
8a2ff43246
Tidy up the interface changes
2020-06-02 17:41:59 +10:00
Matt Joiner
997384a394
Make use of magnet source fields and expose Torrent.MergeSpec
2020-06-02 15:06:05 +10:00
Matt Joiner
026c737886
Add webseeds from magnet links
2020-06-02 13:53:25 +10:00
Matt Joiner
ff53ab860c
Further progress on webseeding
2020-06-01 18:25:45 +10:00
Matt Joiner
69a0f2f1e4
Got file storage working with segment index
2020-06-01 00:14:51 +10:00
Matt Joiner
317146dec9
Export PeerImpl and all its methods
2020-05-31 13:22:36 +10:00
Matt Joiner
3f8f6e1733
Got things compiling
2020-05-31 13:09:56 +10:00
Matt Joiner
de88c620bc
Seperate peer and PeerConn
2020-05-30 15:18:28 +10:00
Matt Joiner
02adc3f2ee
Break peer out from PeerConn
2020-05-30 10:14:20 +10:00
Matt Joiner
cb37a914c1
Rename Peer to PeerInfo, and unexport PeerInfos
2020-05-29 19:44:48 +10:00
Matt Joiner
461403c0f5
Fix Client torrent "of %d bytes" in status
2020-05-13 17:32:16 +10:00
Matt Joiner
39171df0c6
Fix PeerConn outgoing field for webrtc
...
Due to jumping straight into handshakes, outgoing=true was assumed. This didn't actually solve the issue I thought it might, but is important for determining "preferred" connection direction, which may result in dropping connections.
2020-05-03 18:37:26 +10:00
Matt Joiner
f36fc10079
Fix crash when announcing unloaded torrent to websocket
2020-05-03 14:10:46 +10:00
Matt Joiner
3e9a5a4aec
Expose ClientConfig.Extensions
...
Also run the storage failure test with fast disabled for the seeder. This probably would have tickled some issues in the past, so it seems like a good place to try it out.
2020-04-23 13:03:40 +10:00
Matt Joiner
a5db7a7fa6
Remove websocket tracker logging level override
2020-04-22 11:41:12 +10:00
Matt Joiner
0ab6d108be
Pool webtorrent tracker websockets at the Client level
2020-04-21 18:08:43 +10:00
Matt Joiner
c074b30d94
Log webrtc connection errors and rework webtorrent.TrackerClient
2020-04-20 13:42:25 +10:00
Matt Joiner
520d3c38e3
Fix some webtorrent PeerConnection leaks
2020-04-20 10:21:31 +10:00
Matt Joiner
d05ce2d274
Update anacrolix/log
2020-04-16 17:20:58 +10:00
Matt Joiner
74986db9ed
Don't try to do conventional dials if we have no dialers
...
Stops us from consuming all the peers we store for no reason.
2020-04-16 12:00:49 +10:00
Matt Joiner
d4430e89b6
Fix crash with conventional trackers when tcp and utp are disabled
...
Fixes #396 .
2020-04-16 10:27:17 +10:00
Matt Joiner
f45dac1e38
Use offer_id for webrtc conn string
2020-04-13 14:04:34 +10:00