Matt Joiner
dff436f102
Rename connection->PeerConn and fix exports
2020-02-21 11:07:50 +11:00
Matt Joiner
afe4d8795d
Support custom DHT servers
...
Addresses #266 .
2020-02-20 17:46:29 +11:00
Matt Joiner
d24922dc09
Add support for non-IP-based networks
...
Includes a test with unix sockets. Exposes AddDialer, AddListener, and reworks Peer.
2020-02-20 16:47:37 +11:00
Matt Joiner
376ff763fe
Apply staticcheck
2020-02-20 11:09:57 +11:00
Matt Joiner
913f6df80d
Use CopyN to ensure early io.EOF isn't ignored when hashing pieces
2020-01-23 13:56:39 +11:00
Matt Joiner
cf0d0118ea
Finish fixing IP banning on storage errors
2020-01-23 13:54:37 +11:00
Matt Joiner
1d5b8f7451
Reflow some comments
2020-01-22 15:56:16 +11:00
Matt Joiner
2559af0f9c
Extract the request timeout stuff into requestStrategyThree
2020-01-14 10:51:09 +11:00
Matt Joiner
4c989da21e
Extract the request strategy logic
...
Bit messy. Now it'll be easier to clean-up what it depends on, and test.
2020-01-14 10:51:09 +11:00
Matt Joiner
381fb293a5
Fix typos and spellos in comments
2020-01-14 10:51:09 +11:00
Matt Joiner
1039e00955
When piece checks fail only ban untrusted peers and only when the entire piece is dirty
...
This should help with addressing https://github.com/anacrolix/torrent/issues/364 .
2020-01-14 10:51:09 +11:00
Matt Joiner
bf0498ed5a
Improve hash piece error logging
2020-01-14 10:51:09 +11:00
Matt Joiner
b9fb0bf2a2
Don't create piece hashers for closed Torrents
2020-01-14 10:51:09 +11:00
Matt Joiner
814a714459
Propagate back piece hashing errors
...
Attempting to solve https://github.com/anacrolix/torrent/issues/364 .
2020-01-14 10:51:09 +11:00
Matt Joiner
4104880a66
Remove unnecessary locking in Torrent.Piece
2019-12-18 16:49:15 +11:00
Matt Joiner
5f1d937b62
Add connection trust flag, and more tests with small caches
...
Thanks to observations and feedback from @ccampbell.
2019-12-18 13:52:00 +11:00
Matt Joiner
f448f55e88
Coalesce piece state change notifications on client unlock
...
Reported by Craig Campbell <iamcraigcampbell@gmail.com>.
2019-12-13 15:55:56 +11:00
Matt Joiner
da2d174fc9
Include piece index in log message
2019-11-20 20:04:47 +11:00
Matt Joiner
289293f3cc
Rename peer source constants
2019-10-17 17:46:35 +11:00
Matt Joiner
5af5e10640
In the torrent status, sort trackers by the scheme last
2019-10-15 14:59:23 +11:00
Matt Joiner
2a5488f723
Add missing debug level to log statement
2019-08-22 10:20:13 +10:00
Matt Joiner
4850ce6ab3
Restrict the number of concurrent piece hashes
...
This fixes bad behaviour where running out of file descriptors, and overloading the system with goroutines and concurrent I/O may cause newly started torrents to fail to hash data.
2019-08-22 10:17:06 +10:00
Matt Joiner
ee5e459ea3
Tidy up piece completion change handling
2019-08-21 21:06:39 +10:00
Matt Joiner
14fbacd024
Include the piece number when logging piece hash errors
2019-08-21 21:00:47 +10:00
Matt Joiner
cb1bf0f413
goimports -local
2019-08-21 20:58:40 +10:00
Matt Joiner
5a2c1c9b76
Upgrade to simplified logger
2019-08-21 20:44:12 +10:00
Matt Joiner
9224303c1e
Update all imports of dht to v2
2019-08-10 18:46:07 +10:00
Matt Joiner
e9b10f774d
Comments on the VerifyData methods
2019-07-25 14:13:42 +10:00
Matt Joiner
bbeb69bb5f
Ignore cached piece completion state when verifying data
...
Forcing data to be checked via VerifyData, and probably other places where piece checks are queued were being short-circuited due to cached piece completion. If a piece check is queued, or verifyData called, the cached completion state should be ignored.
2019-07-25 14:10:21 +10:00
Matt Joiner
27b7fbe3f3
Fix announcing to S3 HTTP trackers
2019-07-17 18:12:11 +10:00
Matt Joiner
5b44954223
Send tracker stopped event from the tracker scraper routine
...
Fixes potential blocking on the announce while the client lock is held, as well as differing arguments to the other announces introduced by #321 .
2019-07-17 11:56:25 +10:00
Matt Joiner
d27b304dfc
Remove "Sending stopped event to trackers" log
2019-06-18 10:27:17 +10:00
Leandro Martelli
7ce45366f5
Adding Started and Stopped events
2019-06-03 09:45:34 +10:00
Matt Joiner
d478888231
When failing to read stored data, try updating only the completion state for the failed piece
...
On rare occasions, reads are failing in a loop, exhausting all the available file descriptors. It's not clear why, it could be an error in the filecache storage backend I'm using, or some logic error regarding when it's okay to try to read.
2019-04-09 12:57:54 +10:00
Matt Joiner
499b2d8725
Fix race condition in Torrent.SetDisplayName
2019-03-20 11:01:56 +11:00
Matt Joiner
3920c6c325
Fix race in Torrent.String
2019-03-12 11:22:25 +11:00
Matt Joiner
b102ce901a
Reduce allocations for Piece.hash
2019-01-30 17:54:02 +11:00
Matt Joiner
1749152065
Reorder some code in dht announcer
2019-01-22 01:41:07 +01:00
Matt Joiner
a65784374b
Fix cancellation of dht announce when peers are wanted
2019-01-22 01:16:41 +01:00
Matt Joiner
69c39f0036
Restart DHT announces at regular intervals
...
The existing implementation would crawl the DHT until the address bloom filter was full. This could take ages unless enough peers were found to fill the pending nodes for the torrent to the high water mark. Fixes #301 .
2019-01-21 22:54:03 +01:00
Matt Joiner
7fa29b9e4d
Fix build error
2019-01-16 10:11:47 +00:00
Matt Joiner
ee5a941203
Switch entirely to anacrolix/log
2019-01-15 18:18:30 +00:00
Matt Joiner
3ba991e38a
Remove unused code
2018-11-27 23:57:17 +11:00
Matt Joiner
9bb8a327c0
Remove log that used missinggo.CryHeard
2018-11-21 17:05:30 +11:00
Matt Joiner
1dc406c81c
Move IpPort to missinggo
2018-11-16 10:35:30 +11:00
Matt Joiner
0032b45a02
Store remoteAddr with each connection
...
It would appear net.Conns returned from proxies don't have a RemoteAddr the client expects.
2018-11-04 21:15:51 +11:00
Matt Joiner
fc4fab91f5
Switch to goimports import sorting
...
Used to use sortimports, but it's old, and goimports seems to have an opinion now.
2018-11-02 23:12:01 +11:00
Matt Joiner
6dd3b9c12c
Law of Demeter Client.mu
2018-07-25 13:42:28 +10:00
Matt Joiner
631e18d231
Set Torrent.pieces cap too
...
We know exactly how many we want, and don't want to use any more memory.
2018-07-23 10:28:11 +10:00
Matt Joiner
6d6197b0a1
Switch pieceIndex back to an int
...
I suspect that interface conversions using packet iter are causing a lot of allocation. Either way, with the casting this adds, we should be able to change pieceIndex's type alias now with minimal code change.
2018-07-17 21:28:01 +10:00