Commit Graph

83 Commits

Author SHA1 Message Date
Matt Joiner 51431c7cfc Some minor tweaks 2014-06-29 19:10:59 +10:00
Matt Joiner b87bb74f31 Fix a race where the last piece of a torrent is requested before it's been hashed 2014-06-29 19:08:16 +10:00
Matt Joiner 3b29043861 Add peers sent over PEX 2014-06-29 19:07:43 +10:00
Matt Joiner aec5074f3d Add support for extended handshake "v", "reqq", and "p" fields 2014-06-29 18:57:49 +10:00
Matt Joiner 5e7fe0383b Fix crash printing client status when a torrent info isn't available 2014-06-29 18:56:19 +10:00
Matt Joiner 434c954319 Log errors setting the metadata for a torrent, and report when metadata is completed from peers 2014-06-29 15:45:21 +10:00
Matt Joiner 87100587f8 Remove some metadata related debug messages 2014-06-29 15:44:55 +10:00
Matt Joiner c96293a111 Can now download from magnet links 2014-06-28 19:38:31 +10:00
Matt Joiner 9d53e19547 Fixes for cmd/torrent with the new torrent.Info field 2014-06-27 18:57:35 +10:00
Matt Joiner 49e71f9654 Begin adding magnet and ut_metadata support 2014-06-27 00:57:07 +10:00
Matt Joiner 33d53cf9e5 Trivial fix for one of the last commits 2014-06-26 18:08:14 +10:00
Matt Joiner 7c532969d3 Various improvements that've had a lot of testing 2014-06-26 18:06:33 +10:00
Matt Joiner de769cdce7 vet some printfs 2014-06-26 17:30:16 +10:00
Matt Joiner cf31465904 torrentfs: Write client status to HTTP port 2014-06-26 17:29:12 +10:00
Matt Joiner 9b6e3f25cd Reorder actions after a chunk is received 2014-05-29 02:44:27 +10:00
Matt Joiner 26116a7df8 Shuffle chunk spec request order for readahead pieces
Should reduce overlap in received chunks.
2014-05-29 01:32:34 +10:00
Matt Joiner 110aa733a4 Make the readahead on ResponsiveDownloadStrategy customizable 2014-05-29 01:30:59 +10:00
Matt Joiner cfc282ff51 Remove requests from the outbound message queue if cancelled before they're written
Only post peer protocol messages to the channel, bytes must be done directly.
This fixes a possible issue where slow responses during handshake could cause
keep alive messages to be sent prematurely.
2014-05-29 01:27:48 +10:00
Matt Joiner f455ee3868 Remove redundant replenishConnRequests when receiving unchoke 2014-05-23 21:02:42 +10:00
Matt Joiner dfde2a3497 dat new-world-style panic 2014-05-23 21:02:11 +10:00
Matt Joiner 91bf870eb1 Fix a race checking bytes left when announcing 2014-05-23 21:01:35 +10:00
Matt Joiner 898c4f4e4f Store request heat in the download strategy
This avoids recalculating it for every FillRequest
2014-05-23 21:01:05 +10:00
Matt Joiner 763e387c62 TorrentReadAt shouldn't care about verification state 2014-05-23 00:37:36 +10:00
Matt Joiner 65fa317244 Some minor fiddling to announcing in the client 2014-05-23 00:35:24 +10:00
Matt Joiner 96f85be99a ResponsiveDownloadStrategy will readahead blocks
Test peers don't play well with short "up request" buffers, so we need to fill
these with the most likely blocks to achieve maximum download speeds.
2014-05-23 00:33:07 +10:00
Matt Joiner 8022c09b90 client.go: Shorten module peer_protocol to pp 2014-05-21 18:01:58 +10:00
Matt Joiner fdcee11eb0 Shorten variable names in connectionLoop 2014-05-21 17:55:50 +10:00
Matt Joiner cc81bca617 Be more selective about when to replenish connection requests 2014-05-21 17:49:59 +10:00
Matt Joiner 309f70bcb5 Implement connection.{Cancel,Choke} 2014-05-21 17:49:28 +10:00
Matt Joiner ef9e334479 Allocate peer_protocol.Message on the stack in connectionLoop 2014-05-21 17:48:44 +10:00
Matt Joiner d16f444fa8 Support individual peer max requests 2014-05-21 17:47:42 +10:00
Matt Joiner ec77cb0ece Misc minor improvements 2014-05-21 17:42:06 +10:00
Matt Joiner 04879b0002 Add Client.DownloadStrategy; fix priority of incomplete pieces 2014-05-21 17:40:54 +10:00
Matt Joiner 99b7ef4e42 Ininitialize the torrent.Priorities up front and do initial piece checks with a single goroutine 2014-05-21 17:37:31 +10:00
Matt Joiner 0f3c4cb3ec Add some String methods and contextual information in log messages 2014-05-21 00:52:49 +10:00
Matt Joiner 0dee5d9952 Make Request private 2014-04-16 21:13:44 +10:00
Matt Joiner 036fd126e8 Implement receiving cancel messages 2014-04-16 17:33:33 +10:00
Matt Joiner 1aa1063863 Big visibility/doc clean-up, and extract mmap_span package 2014-04-09 02:36:05 +10:00
Matt Joiner 786952e4cd Add error handling to PrioritizeDataRegion as it's public facing API 2014-04-09 01:15:39 +10:00
Matt Joiner c1bf4de70f Mask EHOSTUNREACH on connect() 2014-04-08 19:40:10 +10:00
Matt Joiner 9ba3af19ba Break up client.go into several files and a few fixes
Suppress expected errors when initiating connections.
Add an explicit timeout to initiate connections.
Put a lock on closing a connection to prevent data race warnings.
2014-04-03 23:16:59 +11:00
Matt Joiner 34299483d2 TODO 2014-03-21 00:40:54 +11:00
Matt Joiner 236e12486b Lots of logging improvements 2014-03-21 00:14:17 +11:00
Matt Joiner a1b95d499d Send port on announces when possible 2014-03-21 00:12:53 +11:00
Matt Joiner 1b2a85600f Fix requests to other leechers 2014-03-21 00:11:49 +11:00
Matt Joiner a07b53668f Fix races stopping clients and closing connections 2014-03-20 22:01:56 +11:00
Matt Joiner fa000c4f88 Improvements to pending chunks; extract testutil 2014-03-20 16:58:09 +11:00
Matt Joiner 9ee83455cf Various progress, particularly around the way data readiness is handled 2014-03-20 04:30:08 +11:00
Matt Joiner 998fbeb0c6 Hunting for goroutine leaks
Start implementing Client.Stop().
2014-03-18 22:39:33 +11:00
Matt Joiner 2e81f914e7 Add a end-to-end test for torrentfs
Basic unchoking and uploading.
Accept incoming connections.
Break out torrentfs lib.
Fix and implement some protocol stuff.
2014-03-18 01:44:22 +11:00