]>
Sergey Matveev's repositories - btrtrc.git/log
Matt Joiner [Tue, 22 Nov 2016 10:12:53 +0000 (21:12 +1100)]
Move a bunch of Client methods onto more appropriate types
Matt Joiner [Tue, 22 Nov 2016 04:40:46 +0000 (15:40 +1100)]
tracker: Support the original http response peers format
Fixes #130
Matt Joiner [Tue, 22 Nov 2016 03:20:48 +0000 (14:20 +1100)]
Don't accept pieces with bad indexes
Fixes #132
Matt Joiner [Tue, 22 Nov 2016 03:18:09 +0000 (14:18 +1100)]
Rename connection.downloadedChunk -> receiveChunk
Matt Joiner [Tue, 22 Nov 2016 03:17:30 +0000 (14:17 +1100)]
Make downloadedChunk a method of connection
Matt Joiner [Tue, 22 Nov 2016 03:16:18 +0000 (14:16 +1100)]
Move Client.downloadedChunk to connection.go
Matt Joiner [Tue, 22 Nov 2016 03:01:17 +0000 (14:01 +1100)]
TODO
Matt Joiner [Tue, 22 Nov 2016 03:01:09 +0000 (14:01 +1100)]
gofmt simplify
Matt Joiner [Tue, 8 Nov 2016 10:09:04 +0000 (21:09 +1100)]
metainfo: Remove unused import
Vincent [Fri, 4 Nov 2016 22:32:51 +0000 (15:32 -0700)]
feat: remove print BuildFromFilePath
removes the print of (path, err) in function BuildFromFilePath
Matt Joiner [Mon, 31 Oct 2016 08:05:33 +0000 (19:05 +1100)]
Reader.Close: Prefer to lock Client in public method
Matt Joiner [Mon, 31 Oct 2016 08:05:08 +0000 (19:05 +1100)]
Torrent.unpendPieces: Only update unpended pieces
Updating all pieces at once is no longer faster. (There was an optimization for this a while ago that no longer exists.)
Matt Joiner [Mon, 31 Oct 2016 08:00:08 +0000 (19:00 +1100)]
When Reader position changes only update piece priorities that may be affected
Seems to significantly reduce CPU load reading from torrents with huge piece counts.
Matt Joiner [Mon, 31 Oct 2016 05:24:48 +0000 (16:24 +1100)]
Ditch the use of generic slices.HeapInterface for finding the worst "bad" connection
It's become a bottleneck. Implement it directly using heap.Interface.
Matt Joiner [Mon, 31 Oct 2016 05:22:07 +0000 (16:22 +1100)]
Comment on connection.updatePiecePriority
There's also Torrent.updatePiecePriority, and it's always confusing what the difference is.
Matt Joiner [Tue, 25 Oct 2016 09:00:09 +0000 (20:00 +1100)]
storage: ClientImpl interface now includes Close
This is now necessary because bolt doesn't allow multiple DB handles, so the bolt piece completion DB instance must be at the client level. The new method is not currently used from the Client however, this maybe necessary to avoid leaks.
Matt Joiner [Tue, 25 Oct 2016 08:57:35 +0000 (19:57 +1100)]
storage: Fix spelling mistake
Matt Joiner [Tue, 25 Oct 2016 08:54:09 +0000 (19:54 +1100)]
storage: Only include sqlite3 piece completion implementation if cgo is enabled
Issue #124.
Matt Joiner [Tue, 25 Oct 2016 08:52:44 +0000 (19:52 +1100)]
storage: Remove sqlite3 import from bolt implementation
#124
Igor Shishkin [Tue, 25 Oct 2016 08:13:06 +0000 (11:13 +0300)]
Trivial HTTP support for adding torrent files by (#126)
* Trivial HTTP support for adding torrent files by
Sometimes it's really usefull to do not download
torrent file locally but simply pass HTTP link
this patch adds such ability.
Signed-off-by: Igor Shishkin <me@teran.ru>
* Fix for closing http connection after use
Signed-off-by: Igor Shishkin <me@teran.ru>
Matt Joiner [Tue, 25 Oct 2016 08:07:26 +0000 (19:07 +1100)]
Add bolt piece completion DB
This means it can be persistent without needing cgo. Fixes issues #115 and #124.
Matt Joiner [Tue, 25 Oct 2016 03:58:17 +0000 (14:58 +1100)]
Move the implementation of connection.requestPiecePendingChunks out of Torrent
Matt Joiner [Mon, 24 Oct 2016 08:35:12 +0000 (19:35 +1100)]
Reader.SetReadahead can change readahead pieces
Matt Joiner [Sun, 23 Oct 2016 05:33:26 +0000 (16:33 +1100)]
Optimize piece priorities when reader position changes
Gives a decent boost to throughput and reduces a lot of CPU when reading very quickly from Reader.
Matt Joiner [Tue, 18 Oct 2016 14:38:54 +0000 (01:38 +1100)]
Add TODO item
Thomas Maurice [Fri, 14 Oct 2016 18:07:44 +0000 (20:07 +0200)]
Fix not working import
Matt Joiner [Mon, 10 Oct 2016 06:29:39 +0000 (17:29 +1100)]
Add download rate limiting
Fixes #121.
Matt Joiner [Mon, 10 Oct 2016 05:55:56 +0000 (16:55 +1100)]
Make newConnection a method on Client
Matt Joiner [Mon, 10 Oct 2016 05:30:51 +0000 (16:30 +1100)]
Split connection.rw into separate Reader and Writer
This will make it easier to write hooks for Read and Write separately.
Matt Joiner [Mon, 10 Oct 2016 04:03:02 +0000 (15:03 +1100)]
Fix Config.UploadRateLimiter comment
Matt Joiner [Mon, 10 Oct 2016 03:58:29 +0000 (14:58 +1100)]
Add really simple upload rate limiting and test
Matt Joiner [Mon, 10 Oct 2016 03:57:34 +0000 (14:57 +1100)]
Improve code comments
Matt Joiner [Sun, 9 Oct 2016 13:04:14 +0000 (00:04 +1100)]
Reorder the fields of struct Client
Matt Joiner [Thu, 6 Oct 2016 03:58:50 +0000 (14:58 +1100)]
Update README.md
The build status badge is not helpful due to the aggressive testing and badge caching.
Matt Joiner [Wed, 5 Oct 2016 04:57:38 +0000 (15:57 +1100)]
Default to debug mode in client testing config
Matt Joiner [Wed, 5 Oct 2016 04:57:00 +0000 (15:57 +1100)]
Do chunk pooling at Torrent instead of connection level
Matt Joiner [Fri, 30 Sep 2016 02:14:34 +0000 (12:14 +1000)]
Speed up mse.handshake.establishS
Remove possible slice allocation, and avoid reflect.
Matt Joiner [Sun, 25 Sep 2016 00:31:43 +0000 (10:31 +1000)]
peer_protocol.Decoder.Decode: Avoid allocating another intermediate reader
On my system, BenchmarkConnectionMainReadLoop goes from 596 to 1311 MB/s.
Meng Zhuo [Wed, 21 Sep 2016 11:53:05 +0000 (19:53 +0800)]
fix unreadable id when started
Meng Zhuo [Wed, 21 Sep 2016 11:36:07 +0000 (19:36 +0800)]
fix dht-server cmd won't exit after Ctrl+C
Matt Joiner [Wed, 21 Sep 2016 11:17:22 +0000 (21:17 +1000)]
Create missing intermediate directories in test
Matt Joiner [Wed, 21 Sep 2016 11:04:52 +0000 (21:04 +1000)]
Fix Client.receiveSkeys
Fixes #114. Loop variables in Go are ****ed.
Matt Joiner [Wed, 21 Sep 2016 11:02:18 +0000 (21:02 +1000)]
Tidy up TestMultipleTorrentsWithEncryption test
Matt Joiner [Wed, 21 Sep 2016 11:00:18 +0000 (21:00 +1000)]
Add some more debug logging
Matt Joiner [Tue, 20 Sep 2016 08:39:36 +0000 (18:39 +1000)]
Formatting fixes
Matt Joiner [Tue, 20 Sep 2016 08:39:07 +0000 (18:39 +1000)]
Fixes for changes to metainfo.MetaInfo.UnmarshalInfo
Matt Joiner [Tue, 20 Sep 2016 02:25:40 +0000 (12:25 +1000)]
Add error return value to metainfo.MetaInfo.UnmarshalInfo
Too many problems caused by bad info bytes in downstream projects.
Michael Howell [Fri, 16 Sep 2016 14:01:15 +0000 (07:01 -0700)]
Add a test case for #114 (#117)
Matt Joiner [Fri, 16 Sep 2016 02:42:41 +0000 (12:42 +1000)]
Add Config.{Force,PreferNo}Encryption
Matt Joiner [Fri, 16 Sep 2016 02:13:06 +0000 (12:13 +1000)]
Minor comments and test improvement
Matt Joiner [Fri, 16 Sep 2016 01:19:26 +0000 (11:19 +1000)]
storage: Move sqlite3 import to appropriate file
Matt Joiner [Fri, 16 Sep 2016 01:18:36 +0000 (11:18 +1000)]
Comment on metainfo.PieceKey
Matt Joiner [Tue, 13 Sep 2016 04:03:55 +0000 (14:03 +1000)]
Add note in README about the mobile branch
Matt Joiner [Mon, 12 Sep 2016 07:47:07 +0000 (17:47 +1000)]
cmd/torrent: Fix progress bar for zero-length torrents
Ye Yin [Mon, 12 Sep 2016 07:10:11 +0000 (15:10 +0800)]
Use sync.pool for decode buffer
Matt Joiner [Mon, 12 Sep 2016 07:26:39 +0000 (17:26 +1000)]
Rename some of the unexported file storage types
Matt Joiner [Mon, 12 Sep 2016 07:11:32 +0000 (17:11 +1000)]
Test empty files and zero piece length for both file and mmap storage backends
Matt Joiner [Mon, 12 Sep 2016 07:01:00 +0000 (17:01 +1000)]
Create zero-length files in the file storage when the torrent storage is opened
Fixes #111.
Matt Joiner [Mon, 12 Sep 2016 06:54:43 +0000 (16:54 +1000)]
Fix issue #112
Matt Joiner [Mon, 12 Sep 2016 06:53:20 +0000 (16:53 +1000)]
Add test for issue #111 and #112
Matt Joiner [Sun, 11 Sep 2016 05:43:57 +0000 (15:43 +1000)]
Add a benchmark for readMainLoop piece decoding
Matt Joiner [Sun, 11 Sep 2016 04:32:56 +0000 (14:32 +1000)]
Move Client.connectionLoop to connection.mainReadLoop
Matt Joiner [Sun, 11 Sep 2016 04:12:03 +0000 (14:12 +1000)]
Remove unused trackerTier and shuffleTier
Matt Joiner [Sun, 11 Sep 2016 04:09:40 +0000 (14:09 +1000)]
Move TorrentSpec stuff into its own file
Ben Gadbois [Tue, 6 Sep 2016 23:43:29 +0000 (16:43 -0700)]
Comment typo (#110)
Matt Joiner [Fri, 2 Sep 2016 05:26:21 +0000 (15:26 +1000)]
Relax the seeder torrent connection stats test
The values have changed due to the recent storage change, I'm not sure why, and I don't know if it's important.
Matt Joiner [Fri, 2 Sep 2016 05:10:57 +0000 (15:10 +1000)]
Rework storage interfaces to make them simpler to implement
This allows lots of behaviour to be baked into the new Client, Torrent and Piece wrappers, rather than duplicating (badly) them in all the backend implementations.
Matt Joiner [Wed, 31 Aug 2016 11:00:44 +0000 (21:00 +1000)]
storage.boltDB: Some comments, and use global completedValue
Matt Joiner [Wed, 31 Aug 2016 10:14:57 +0000 (20:14 +1000)]
Improve test reliability on Linux and reduce log noise in tests
Matt Joiner [Wed, 31 Aug 2016 08:04:11 +0000 (18:04 +1000)]
Extract chunkSize as a const
Matt Joiner [Wed, 31 Aug 2016 09:33:54 +0000 (19:33 +1000)]
Pass seed option to Config for cmd/torrent (#108)
Ye Yin [Wed, 31 Aug 2016 09:20:20 +0000 (17:20 +0800)]
Pass seed option to Config for cmd/torrent
Matt Joiner [Wed, 31 Aug 2016 08:02:45 +0000 (18:02 +1000)]
Uncomment the error handling in storage.boltDBPiece.ReadAt
Matt Joiner [Wed, 31 Aug 2016 07:48:50 +0000 (17:48 +1000)]
Add boltdb storage backend
Matt Joiner [Tue, 30 Aug 2016 06:55:50 +0000 (16:55 +1000)]
Comment on PiecePriorityNext
Matt Joiner [Tue, 30 Aug 2016 05:41:26 +0000 (15:41 +1000)]
Rework Reader position changes affecting piece priorities
Torrent.updatePiecePriorities is always followed by Torrent.piecePriorityChanged, so move it into the former function. Also drop the separate mutex for Reader, and add a missing Reader.posChanged call.
Matt Joiner [Tue, 30 Aug 2016 05:07:59 +0000 (15:07 +1000)]
Improve comments
Matt Joiner [Tue, 30 Aug 2016 04:21:50 +0000 (14:21 +1000)]
Add a benchmark for an observed slow case with Torrent.updatePiecePriorities
Matt Joiner [Tue, 30 Aug 2016 04:19:29 +0000 (14:19 +1000)]
Only parse the config listen addr if we have to
This fixes a broken benchmark
Matt Joiner [Tue, 30 Aug 2016 04:09:01 +0000 (14:09 +1000)]
Add missing error return check in benchmark
Matt Joiner [Fri, 26 Aug 2016 10:29:29 +0000 (20:29 +1000)]
Make bencode.Bytes work with pointer and nonpointer receivers
Matt Joiner [Fri, 26 Aug 2016 10:29:05 +0000 (20:29 +1000)]
Remove the InfoEx type, and don't generate its infohash on the fly
Fixes #106.
Matt Joiner [Fri, 26 Aug 2016 04:51:38 +0000 (14:51 +1000)]
bencode: More renames
Matt Joiner [Fri, 26 Aug 2016 04:51:09 +0000 (14:51 +1000)]
Add bencode.Bytes
Matt Joiner [Fri, 26 Aug 2016 03:13:30 +0000 (13:13 +1000)]
bencode: Rename a bunch of slug case stuff
Matt Joiner [Sun, 14 Aug 2016 12:39:23 +0000 (22:39 +1000)]
Speed up connection.lastHelpful
Moving to reflection and interfaces has made it a bottleneck.
Matt Joiner [Tue, 2 Aug 2016 01:19:41 +0000 (11:19 +1000)]
cmd/torrentfs: Ensure unmounting occurs for some errors
Restructured so other errors can be handled better too.
Matt Joiner [Tue, 2 Aug 2016 01:18:33 +0000 (11:18 +1000)]
Fix some more races in the status writing
perses [Mon, 1 Aug 2016 13:56:56 +0000 (16:56 +0300)]
fs: fix isSubPath for top-level directories (#105)
Matt Joiner [Fri, 29 Jul 2016 14:48:15 +0000 (00:48 +1000)]
Fix build error with missinggo.Sorted
Matt Joiner [Fri, 29 Jul 2016 14:42:22 +0000 (00:42 +1000)]
Always run seeder and leecher on the same ports, to flex dht.Socket.CloseNow
Matt Joiner [Fri, 29 Jul 2016 14:41:45 +0000 (00:41 +1000)]
Add some extra conditions to prevent network activity when a torrent is closed
From suggestions by @axet, this might be a thing sometimes.
Matt Joiner [Fri, 29 Jul 2016 14:37:52 +0000 (00:37 +1000)]
Begin exposing all the magic that Client.WriteStatus has so people can parse Client state their own way
It wasn't possible to move Client.WriteStatus to an external package to verify it doesn't depend on same-package access to data because then it can't be used in the tests, and it's extremely useful there. So I've settled for not locking the Client, and trying to use all the public methods. It's a work in progress.
Alexey Kuznetsov [Sun, 24 Jul 2016 17:26:30 +0000 (20:26 +0300)]
it is actually sha1 hash size
perses [Wed, 27 Jul 2016 02:35:52 +0000 (05:35 +0300)]
torrentfs: fix panic when testPeer is not specified (#103)
Matt Joiner [Wed, 27 Jul 2016 02:13:41 +0000 (12:13 +1000)]
Merge pull request #101 from perses/master
dirwatch: fix panic when attemting to copy func into [20]byte
ctn [Tue, 26 Jul 2016 20:30:40 +0000 (23:30 +0300)]
torrentfs: fix panic when testPeer is not specified
ctn [Tue, 26 Jul 2016 19:34:09 +0000 (22:34 +0300)]
dirwatch: fix panic when attemting to copy func into [20]byte
Matt Joiner [Sat, 23 Jul 2016 14:35:34 +0000 (00:35 +1000)]
Some comments helping to break up the blocks in testClientTransfer
Matt Joiner [Sat, 23 Jul 2016 14:34:40 +0000 (00:34 +1000)]
Kick connections that contribute the final piece of missing metadata that fails to validate
Failing to get metainfo was resetting Torrent.metadataBytes, which caused arriving metadata data to appear to belong to nonexistent pieces, despite passing the check that we'd in fact requested them from the sending connection. This was unnecessarily noisy. Instead return an error if we got all the data, but couldn't set the Torrent's info bytes, that should propagate out and cause the connection that contributed the final missing piece to be dropped. This will at least provide some improved resistance to unfriendly behaviour on the network.