Commit Graph

1956 Commits

Author SHA1 Message Date
Matt Joiner 81e6061a53 When Accept gives an error, don't use the Conn 2018-07-27 10:18:56 +10:00
Matt Joiner e8a4a52e00 Update go.mod 2018-07-25 18:27:43 +10:00
Matt Joiner 2f14e5dbc0 Track received handshake encryption activity 2018-07-25 17:11:56 +10:00
Matt Joiner 2940f27f9f Use the new firewall callback support in go-libutp 2018-07-25 17:11:09 +10:00
Matt Joiner 6dd3b9c12c Law of Demeter Client.mu 2018-07-25 13:42:28 +10:00
Matt Joiner bf5552ae3c bencode: Remove a lot of expensive allocations 2018-07-25 13:42:28 +10:00
Matt Joiner 57a5955f15
Merge pull request #269 from JyBP/master
cmd/torrent: Listen to termination signals
2018-07-24 18:20:23 +10:00
jb 5a09866db4 attempt to close the client on signal 2018-07-24 09:34:06 +02:00
Matt Joiner 61d5902786 bencode: Avoid an extra getTags call 2018-07-23 11:09:42 +10:00
Matt Joiner 341501bf93 bencode: Cache struct fields 2018-07-23 10:50:58 +10:00
Matt Joiner 2eb98189ff bencode.Marshal: Get rid of the intermediate buffer 2018-07-23 10:50:18 +10:00
Matt Joiner ea65ed0c2a bencode: Add benchmark for krpc.Msg 2018-07-23 10:32:19 +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 2d6888cb97 Add iplist/cmd/iplist 2018-07-22 19:51:30 +10:00
Matt Joiner 3a7152ca21 Fix iplist.Range.String, and a comment 2018-07-22 12:59:02 +10:00
Matt Joiner 8479f215e0 Don't return if there's an error accepting
This happens if there's too many file descriptors, and left the client unresponsive.
2018-07-22 12:58:41 +10:00
Matt Joiner d575877a5d Wake connections that could send a request for a deleted piece
I'm not sure this is entirely correct, but not doing it is probably less correct. It should help prevent stalls where writers aren't requesting because they're starved out of opportunities by other connections.
2018-07-17 21:29:54 +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
Matt Joiner b00711bb68 bencode: Avoid Value.Interface call testing for big.Int
Was resulting in significant allocation.
2018-07-17 21:25:15 +10:00
Matt Joiner 216cb7e356 Don't randomize chunk order for requestStrategy 3
This should also reduce a lot of allocation.
2018-07-17 15:08:46 +10:00
Matt Joiner 4db3870836 Reduce default handshake timeout to 3s 2018-07-15 13:01:22 +10:00
Matt Joiner f22be3892f Calculate peer priority lazily for worse conn comparison 2018-07-15 12:57:52 +10:00
Matt Joiner bd5ae2cb6d Fix doc comment 2018-07-15 12:56:28 +10:00
Matt Joiner 5fb5010762 Fix connection.utp 2018-07-15 12:55:49 +10:00
Matt Joiner d4d3e24c6f Track metadata chunks read with its own Count 2018-07-15 10:09:58 +10:00
Matt Joiner 91730696cf Rewrite piece data decoding and relax test 2018-07-14 11:50:43 +10:00
Matt Joiner 01380adac3 peer_protocol: Add a test for receiving overlong piece data
The chunk buffer pool decides the upper bound on chunk data len.
2018-07-14 11:37:56 +10:00
Matt Joiner d4d8f78906 Send extended message before fast/bitfield
This is how Transmission does it.
2018-07-14 11:28:54 +10:00
Matt Joiner cc6441a791 Fix peer_protocol.Message.RequestSpec for Type Piece 2018-07-13 21:33:21 +10:00
Matt Joiner c001e6e008 Add a test that short pieces are decoded correctly 2018-07-12 09:54:06 +10:00
Matt Joiner 324cc7a281 Comments and trivial tweaks 2018-07-12 09:42:00 +10:00
Matt Joiner ee985e51cb Add peer_protocol.Integer.Uint32 2018-07-12 09:16:40 +10:00
Matt Joiner 86ca9ffa7e Add peer_protocol.RequestSpec 2018-07-12 09:16:17 +10:00
Matt Joiner f5bd377941 Change pieceIndex to peer_protocol.Integer 2018-07-12 09:15:15 +10:00
Matt Joiner ba8ec1a787 Move back to net.IP for extended handshake message IPs 2018-07-12 00:00:07 +10:00
Matt Joiner a4a123b04e Don't error on bencode dicts that can't be marshalled
Have seen metainfo announce-lists that are lists of dicts. Possibly ignoring type errors with a tag would be smarter but I'm undecided.
2018-07-11 15:33:41 +10:00
Matt Joiner 04fa1b8d4c Support marshalling bencode strings into byte arrays 2018-07-11 15:22:29 +10:00
Matt Joiner de08380464 Decide where to set proxy for HTTP trackers
Remove old ClientConfig.setProxyURL, set this directly now through ClientConfig.TrackerHttpClient.Transport.Proxy (if your Client allows it).
2018-07-11 15:10:58 +10:00
Matt Joiner b9cfe71d90 Remove debug log 2018-07-10 13:14:39 +10:00
Matt Joiner 2685ef6aa9 Use half open limit directly from Config 2018-07-10 12:23:00 +10:00
Matt Joiner 1f6ba94882 Make extended handshake a struct, and move a bunch of extended stuff into peer_protocol 2018-07-10 12:20:36 +10:00
Matt Joiner 50def7a688 Move PEX stuff into peer_protocol 2018-07-10 11:21:24 +10:00
Matt Joiner e3cb94006c Reinstate the reduce dial timeout and update some values
Fixes #263
2018-07-10 11:19:14 +10:00
Matt Joiner f149d0b82a bep40Priority: Include error in return 2018-07-10 11:14:23 +10:00
Matt Joiner ba9935d522 Add more worseConn comparisons
Should fix #264.
2018-07-10 09:50:39 +10:00
Matt Joiner a7e338a3f1 More sortimports 2018-07-07 11:40:06 +10:00
Matt Joiner fad06c7ddf sortimports 2018-07-07 11:36:58 +10:00
Matt Joiner 316640f921 Fix panic when failing to parse tracker URL 2018-07-07 11:35:47 +10:00
Matt Joiner e0f0617b0b Comments and readability 2018-07-07 11:33:48 +10:00
Matt Joiner e1d6fc2341 Add torrent.InfoHash type alias 2018-07-07 11:32:52 +10:00