]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
3 years agoTidy up doc, file names, naming
Matt Joiner [Sun, 8 Nov 2020 23:56:27 +0000 (10:56 +1100)]
Tidy up doc, file names, naming

3 years agoUpdate README.md
Matt Joiner [Sun, 8 Nov 2020 22:20:05 +0000 (09:20 +1100)]
Update README.md

3 years agoFix initial pex message regression
Matt Joiner [Fri, 6 Nov 2020 05:23:23 +0000 (16:23 +1100)]
Fix initial pex message regression

As pointed out by @yarikk https://github.com/anacrolix/torrent/commit/c1d189ed31af99cbf6f10d9ffdc2cc4e19a73b91#r43920706

3 years agoReplace storage.IncompletePieceToWriter with io.Writer
Matt Joiner [Thu, 5 Nov 2020 23:36:49 +0000 (10:36 +1100)]
Replace storage.IncompletePieceToWriter with io.Writer

It was incorrect to assume piece hashing only operates on incomplete chunk data. This actually uncovered a bug where duplicate hash checks occurred, and the redundant checks would fail due to not reading the completed data.

3 years agoFix PkgGoDev reference in README
Code7unner [Thu, 5 Nov 2020 07:10:14 +0000 (17:10 +1000)]
Fix PkgGoDev reference in README

3 years agoFix piece getting queued for hash multiple times
Matt Joiner [Thu, 5 Nov 2020 21:39:56 +0000 (08:39 +1100)]
Fix piece getting queued for hash multiple times

Pieces could get queued for hash multiple times when we receive chunks if the piece starts getting hashed before we're done writing all the chunks out. This was only found because piece hashing currently only checks the incomplete data, which is missing after the first piece hash passes, the data is marked complete, then the subsequently queued hash has nothing to read.

3 years agoAdd the ReceiveEncryptedHandshakeSkeys callback
Matt Joiner [Thu, 5 Nov 2020 02:28:45 +0000 (13:28 +1100)]
Add the ReceiveEncryptedHandshakeSkeys callback

3 years agomse/cmd/mse: Fail on missing subcommand
Matt Joiner [Wed, 4 Nov 2020 05:34:31 +0000 (16:34 +1100)]
mse/cmd/mse: Fail on missing subcommand

3 years agoRemove old comment
Matt Joiner [Wed, 4 Nov 2020 00:34:24 +0000 (11:34 +1100)]
Remove old comment

3 years agosqlite storage: Add capacity management
Matt Joiner [Tue, 3 Nov 2020 04:17:12 +0000 (15:17 +1100)]
sqlite storage: Add capacity management

3 years agosqlite storage: Batch writes synchronously instead of buffering them first
Matt Joiner [Tue, 3 Nov 2020 04:16:57 +0000 (15:16 +1100)]
sqlite storage: Batch writes synchronously instead of buffering them first

3 years agoComment on storage.IncompletePieceToWriter
Matt Joiner [Tue, 3 Nov 2020 03:28:16 +0000 (14:28 +1100)]
Comment on storage.IncompletePieceToWriter

3 years agosqlite storage: Init schema in NewPool instead of NewProvider and add an option to...
Matt Joiner [Tue, 3 Nov 2020 02:11:44 +0000 (13:11 +1100)]
sqlite storage: Init schema in NewPool instead of NewProvider and add an option to disable

3 years agosqlite storage: Track total blob data size manually
Matt Joiner [Tue, 3 Nov 2020 02:10:17 +0000 (13:10 +1100)]
sqlite storage: Track total blob data size manually

Works around possible full table scan at startup, and possible lack of caching around cast(data as blob).

3 years agoUpdate the readahead window on read failure
Matt Joiner [Mon, 2 Nov 2020 23:41:47 +0000 (10:41 +1100)]
Update the readahead window on read failure

3 years agoAdd write incomplete/consecutive chunks interfaces
Matt Joiner [Mon, 2 Nov 2020 04:35:07 +0000 (15:35 +1100)]
Add write incomplete/consecutive chunks interfaces

3 years agosqlite storage: Add batched writes
Matt Joiner [Fri, 30 Oct 2020 08:46:51 +0000 (19:46 +1100)]
sqlite storage: Add batched writes

3 years agosqlite storage: Set mmap_size to a very large size
Matt Joiner [Fri, 30 Oct 2020 07:40:47 +0000 (18:40 +1100)]
sqlite storage: Set mmap_size to a very large size

Seems to fall back to ~2GiB on my system.

3 years agosqlite storage: Provide helpers and reasonable defaults
Matt Joiner [Fri, 30 Oct 2020 01:20:54 +0000 (12:20 +1100)]
sqlite storage: Provide helpers and reasonable defaults

3 years agoDon't delete requests until after they're written to disk
Matt Joiner [Fri, 30 Oct 2020 01:19:53 +0000 (12:19 +1100)]
Don't delete requests until after they're written to disk

This prevents too many pending writes building up. Webseed peers re-request synchronously, and the writes are done asynchronously, so they download too quickly and there was no backpressure. The backpressure now is provided by the upper limit on outstanding requests per connection.

3 years agosqlite storage: Force data to be used as a blob
Matt Joiner [Thu, 29 Oct 2020 23:47:50 +0000 (10:47 +1100)]
sqlite storage: Force data to be used as a blob

There's a bug in crawshaw.io/sqlite, and some forks where inserting []byte results in a text type instead of blob. To ensure things work correctly, we coerce data to blob wherever we can. See https://github.com/crawshaw/sqlite/issues/94 and the fork that fixes it.

3 years agoInclude a null byte in the middle of the Greeting test
Matt Joiner [Thu, 29 Oct 2020 23:42:45 +0000 (10:42 +1100)]
Include a null byte in the middle of the Greeting test

3 years agoFix peer request sleepiness
Matt Joiner [Wed, 28 Oct 2020 23:45:38 +0000 (10:45 +1100)]
Fix peer request sleepiness

New requests weren't being issued to the current peer when being deleted. For webseeds, this would cause them to not bother issuing new requests indefinitely.

(cherry picked from commit 146a16df4ea26d33b0ce0391c8220de14c9e18f4)

3 years agoDon't fail on 386 tests in CI
Matt Joiner [Wed, 28 Oct 2020 01:09:24 +0000 (12:09 +1100)]
Don't fail on 386 tests in CI

Looks like crawshaw.io/sqlite fails to build, possibly due to cross-compiling.

3 years agoSwitch CI to go1.15
Matt Joiner [Tue, 27 Oct 2020 23:03:37 +0000 (10:03 +1100)]
Switch CI to go1.15

3 years agoRemove some unused code
Matt Joiner [Tue, 27 Oct 2020 06:56:55 +0000 (17:56 +1100)]
Remove some unused code

3 years agoPerformance fiddling on sqlite storage
Matt Joiner [Tue, 27 Oct 2020 06:07:49 +0000 (17:07 +1100)]
Performance fiddling on sqlite storage

3 years agoReturn errors from Reader if data downloading won't occur
Matt Joiner [Tue, 27 Oct 2020 03:10:17 +0000 (14:10 +1100)]
Return errors from Reader if data downloading won't occur

Chunk write errors to storage can disable data download. Previously Readers would wait indefinitely for the data to become available. This change returns an error instead of stalling.

3 years agoDon't block trying to fill entire Reader.Read
Matt Joiner [Tue, 27 Oct 2020 01:59:07 +0000 (12:59 +1100)]
Don't block trying to fill entire Reader.Read

This conforms more to the contract in io.Reader. It's possible the old behaviour was better in reducing overhead, but that can be iterated on (or added as comments next time).

3 years agoRead from more than a single piece in each read to Torrent storage
Matt Joiner [Tue, 27 Oct 2020 01:24:43 +0000 (12:24 +1100)]
Read from more than a single piece in each read to Torrent storage

3 years agoRemove separate readable/available in Reader
Matt Joiner [Tue, 27 Oct 2020 01:05:40 +0000 (12:05 +1100)]
Remove separate readable/available in Reader

3 years agosqlite storage: Include capacity management
Matt Joiner [Tue, 27 Oct 2020 00:08:37 +0000 (11:08 +1100)]
sqlite storage: Include capacity management

3 years agosqlite storage: Do ReadAt without using incremental I/O
Matt Joiner [Tue, 27 Oct 2020 00:08:08 +0000 (11:08 +1100)]
sqlite storage: Do ReadAt without using incremental I/O

3 years agosqlite storage: Working recursive CTE for excess data
Matt Joiner [Fri, 23 Oct 2020 00:03:42 +0000 (11:03 +1100)]
sqlite storage: Working recursive CTE for excess data

3 years agosqlite storage: Add NewProviderPool
Matt Joiner [Thu, 22 Oct 2020 22:03:44 +0000 (09:03 +1100)]
sqlite storage: Add NewProviderPool

3 years agosqlite storage: Rename table to blob
Matt Joiner [Thu, 22 Oct 2020 22:01:15 +0000 (09:01 +1100)]
sqlite storage: Rename table to blob

Avoiding plural table names.

3 years agoPerformance improvements to PEX
Matt Joiner [Thu, 22 Oct 2020 21:58:55 +0000 (08:58 +1100)]
Performance improvements to PEX

3 years agoFix error handling for bad torrent adds with safe file handling v1.18.0
Matt Joiner [Thu, 15 Oct 2020 05:03:43 +0000 (16:03 +1100)]
Fix error handling for bad torrent adds with safe file handling

3 years agoSanitize metainfo file paths for file-based storage
Matt Joiner [Thu, 15 Oct 2020 04:45:08 +0000 (15:45 +1100)]
Sanitize metainfo file paths for file-based storage

Fixes exploit where specially crafted infos can cause the client to write files to arbitrary locations on local storage when using file-based storages like mmap and file.

3 years agoDon't update requests for the current connection first when a request is deleted
Matt Joiner [Thu, 15 Oct 2020 01:56:06 +0000 (12:56 +1100)]
Don't update requests for the current connection first when a request is deleted

3 years agoWe might want to close webseed peers on response errors
Matt Joiner [Thu, 15 Oct 2020 01:45:19 +0000 (12:45 +1100)]
We might want to close webseed peers on response errors

3 years agowebseed: Handle http response status codes
Matt Joiner [Thu, 15 Oct 2020 01:42:27 +0000 (12:42 +1100)]
webseed: Handle http response status codes

3 years agoEnsure PeerConn._close is called for incoming connections
Matt Joiner [Wed, 14 Oct 2020 04:11:45 +0000 (15:11 +1100)]
Ensure PeerConn._close is called for incoming connections

This fixes missing calls to PeerConnClosed callback.

3 years agoTest both sqlite file and in-memory leecher storages
Matt Joiner [Tue, 13 Oct 2020 02:34:05 +0000 (13:34 +1100)]
Test both sqlite file and in-memory leecher storages

3 years agoMove pexConnState from peer to PeerConn
Matt Joiner [Tue, 13 Oct 2020 02:33:22 +0000 (13:33 +1100)]
Move pexConnState from peer to PeerConn

3 years agoAdd PeerConnClosed callback
Matt Joiner [Tue, 13 Oct 2020 02:02:39 +0000 (13:02 +1100)]
Add PeerConnClosed callback

3 years agoAdd last_used to sqlite storage
Matt Joiner [Mon, 12 Oct 2020 22:36:58 +0000 (09:36 +1100)]
Add last_used to sqlite storage

3 years agoUse bind-blob fix for crawshaw.io/sqlite
Matt Joiner [Mon, 12 Oct 2020 06:13:05 +0000 (17:13 +1100)]
Use bind-blob fix for crawshaw.io/sqlite

3 years agoFix some log levels
Matt Joiner [Mon, 12 Oct 2020 06:12:34 +0000 (17:12 +1100)]
Fix some log levels

3 years agoAdd a sqlite data storage implementation
Matt Joiner [Sun, 11 Oct 2020 01:58:27 +0000 (12:58 +1100)]
Add a sqlite data storage implementation

3 years agoPanic on bad piece per resource chunk names
Matt Joiner [Sun, 11 Oct 2020 01:57:33 +0000 (12:57 +1100)]
Panic on bad piece per resource chunk names

This was masking a bug in a coming sqlite storage implementation. Maybe it could be relaxed to checking for no filepath.Dir in the future.

3 years agoTweaks to storage error and completion handling
Matt Joiner [Sun, 11 Oct 2020 01:54:03 +0000 (12:54 +1100)]
Tweaks to storage error and completion handling

3 years agoTidy up some storage close handling
Matt Joiner [Sun, 11 Oct 2020 01:40:43 +0000 (12:40 +1100)]
Tidy up some storage close handling

3 years agoUse testing.T.Name instead of missinggo.GetTestName
Matt Joiner [Fri, 9 Oct 2020 23:59:17 +0000 (10:59 +1100)]
Use testing.T.Name instead of missinggo.GetTestName

This handles subtests correctly, and removes the need to specify when to export due to collisions with the old function.

3 years agoTidy up some logging
Matt Joiner [Fri, 9 Oct 2020 23:24:58 +0000 (10:24 +1100)]
Tidy up some logging

3 years agoFix webseed requests for non-trivial path components v1.17.1
Matt Joiner [Tue, 6 Oct 2020 23:22:55 +0000 (10:22 +1100)]
Fix webseed requests for non-trivial path components

3 years agoFix PeerConn conn status string v1.17.0
Matt Joiner [Mon, 5 Oct 2020 22:50:47 +0000 (09:50 +1100)]
Fix PeerConn conn status string

3 years agoFix unused import
Matt Joiner [Thu, 1 Oct 2020 01:50:42 +0000 (11:50 +1000)]
Fix unused import

3 years agoSet tracker announce timeout back to default
Matt Joiner [Thu, 1 Oct 2020 01:45:47 +0000 (11:45 +1000)]
Set tracker announce timeout back to default

Add lots of comments about how this works and why.

3 years agoExpose Client.ConnStats
Matt Joiner [Thu, 1 Oct 2020 01:20:44 +0000 (11:20 +1000)]
Expose Client.ConnStats

3 years agoInclude ip param in http announces
Matt Joiner [Thu, 1 Oct 2020 00:46:27 +0000 (10:46 +1000)]
Include ip param in http announces

3 years agoPass key param in http announces
Matt Joiner [Thu, 1 Oct 2020 00:45:29 +0000 (10:45 +1000)]
Pass key param in http announces

3 years agoRework HTTP announce timeouts
Matt Joiner [Thu, 1 Oct 2020 00:45:05 +0000 (10:45 +1000)]
Rework HTTP announce timeouts

Use Request.Context to implement timeouts, set the default to 3s for announces from the Client.

3 years agoLimit simultaneous announces to the same URL
Matt Joiner [Thu, 1 Oct 2020 00:43:10 +0000 (10:43 +1000)]
Limit simultaneous announces to the same URL

3 years agoLimit half-open connections at the Client level
Matt Joiner [Wed, 30 Sep 2020 06:56:27 +0000 (16:56 +1000)]
Limit half-open connections at the Client level

3 years agoRename struct size test
Matt Joiner [Tue, 29 Sep 2020 06:42:52 +0000 (16:42 +1000)]
Rename struct size test

3 years agoOptimize padding on Piece
Matt Joiner [Tue, 29 Sep 2020 06:37:58 +0000 (16:37 +1000)]
Optimize padding on Piece

3 years agoAdd a test for Piece size
Matt Joiner [Tue, 29 Sep 2020 06:24:43 +0000 (16:24 +1000)]
Add a test for Piece size

3 years agoFix conn status string for WebRTC connections
Matt Joiner [Tue, 29 Sep 2020 06:21:54 +0000 (16:21 +1000)]
Fix conn status string for WebRTC connections

3 years agoFix panic for unexpected piece rejections v1.16.0
Matt Joiner [Thu, 3 Sep 2020 04:34:06 +0000 (14:34 +1000)]
Fix panic for unexpected piece rejections

Should fix #419.

3 years agoAdd to downstream projects in README
Matt Joiner [Tue, 11 Aug 2020 01:43:12 +0000 (11:43 +1000)]
Add to downstream projects in README

CortexFoundation/torrentfs

3 years agoAdd ReadExtendedHandshake callback
Matt Joiner [Wed, 15 Jul 2020 06:16:09 +0000 (16:16 +1000)]
Add ReadExtendedHandshake callback

3 years agoExpose peer.RemoteAddr
Matt Joiner [Wed, 15 Jul 2020 06:15:38 +0000 (16:15 +1000)]
Expose peer.RemoteAddr

3 years agoSwitch to crawshaw.io/sqlite
Matt Joiner [Wed, 15 Jul 2020 06:13:26 +0000 (16:13 +1000)]
Switch to crawshaw.io/sqlite

I'm using it elsewhere, and it seems to conflict when linking with github.com/mattn/go-sqlite3.

3 years agoAdd some client callbacks
Matt Joiner [Wed, 15 Jul 2020 04:00:47 +0000 (14:00 +1000)]
Add some client callbacks

3 years agoAdd PkgGoDev badge
Matt Joiner [Tue, 14 Jul 2020 22:39:44 +0000 (08:39 +1000)]
Add PkgGoDev badge

3 years agoPull in go-libutp fix for race
Matt Joiner [Fri, 10 Jul 2020 03:24:08 +0000 (13:24 +1000)]
Pull in go-libutp fix for race

3 years agoSupport -testPeer addresses that need resolving
Matt Joiner [Fri, 10 Jul 2020 03:21:24 +0000 (13:21 +1000)]
Support -testPeer addresses that need resolving

Fixes #395.

3 years agoHandle errors in webseed peers for bad URLs
Matt Joiner [Fri, 10 Jul 2020 03:18:33 +0000 (13:18 +1000)]
Handle errors in webseed peers for bad URLs

3 years agoUpdate bbolt
Matt Joiner [Fri, 19 Jun 2020 02:24:03 +0000 (12:24 +1000)]
Update bbolt

3 years agoDon't filter context cancel errors
Matt Joiner [Fri, 19 Jun 2020 01:41:26 +0000 (11:41 +1000)]
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.

4 years agoTidy up webseed peer naming and unused types
Matt Joiner [Thu, 4 Jun 2020 01:58:18 +0000 (11:58 +1000)]
Tidy up webseed peer naming and unused types

4 years agoFix panic in webseed request rejection logging
Matt Joiner [Thu, 4 Jun 2020 01:50:20 +0000 (11:50 +1000)]
Fix panic in webseed request rejection logging

Also use a new helper in Logger to simplify things.

4 years agotorrent : add udp scheme to 'switch case'
ucwong [Wed, 3 Jun 2020 04:35:52 +0000 (04:35 +0000)]
torrent : add udp scheme to 'switch case'

4 years agoAdd DisallowDataDownload/Upload to TorrentSpec and small log cleanup
Maxb [Wed, 3 Jun 2020 19:17:47 +0000 (12:17 -0700)]
Add DisallowDataDownload/Upload to TorrentSpec and small log cleanup

4 years agoMerge pull request #410 from anacrolix/webseeds
Matt Joiner [Wed, 3 Jun 2020 01:25:08 +0000 (11:25 +1000)]
Merge pull request #410 from anacrolix/webseeds

* Rename Peer to PeerInfo, and unexport PeerInfos

* Break peer out from PeerConn

* Abstract out segments mapping and use it in mmap storage

* Got file storage working with segment index

* Fix race in webtorrent.TrackerClient.Run

* storage file implementation: Error on short writes

* Remove debug logging from storage file implementation

* cmd/torrent-verify: Fix piece hash output

* Support disabling webtorrent

* Further progress on webseeding

* Handle webseed Client events

* Rename fastestConn->fastestPeer

* Add webseeds from magnet links

* Remove events from webseed

Manage this stuff inside the webseed peer instead.

* Make use of magnet source fields and expose Torrent.MergeSpec

* Add option to disable webseeds

* Fix webseeds when info isn't available immediately

* Handle webseed request errors

* Tidy up the interface changes

4 years agoTidy up the interface changes
Matt Joiner [Tue, 2 Jun 2020 07:41:59 +0000 (17:41 +1000)]
Tidy up the interface changes

4 years agoHandle webseed request errors
Matt Joiner [Tue, 2 Jun 2020 06:41:49 +0000 (16:41 +1000)]
Handle webseed request errors

4 years agoFix webseeds when info isn't available immediately
Matt Joiner [Tue, 2 Jun 2020 06:18:25 +0000 (16:18 +1000)]
Fix webseeds when info isn't available immediately

4 years agoAdd option to disable webseeds
Matt Joiner [Tue, 2 Jun 2020 06:17:32 +0000 (16:17 +1000)]
Add option to disable webseeds

4 years agoMake use of magnet source fields and expose Torrent.MergeSpec
Matt Joiner [Tue, 2 Jun 2020 05:06:05 +0000 (15:06 +1000)]
Make use of magnet source fields and expose Torrent.MergeSpec

4 years agoRemove events from webseed
Matt Joiner [Tue, 2 Jun 2020 03:54:26 +0000 (13:54 +1000)]
Remove events from webseed

Manage this stuff inside the webseed peer instead.

4 years agoAdd webseeds from magnet links
Matt Joiner [Tue, 2 Jun 2020 03:53:25 +0000 (13:53 +1000)]
Add webseeds from magnet links

4 years agoAdd per-torrent ability to disable uploading
Maxb [Sat, 30 May 2020 19:42:51 +0000 (12:42 -0700)]
Add per-torrent ability to disable uploading

4 years agoRename fastestConn->fastestPeer
Matt Joiner [Mon, 1 Jun 2020 09:09:17 +0000 (19:09 +1000)]
Rename fastestConn->fastestPeer

4 years agoHandle webseed Client events
Matt Joiner [Mon, 1 Jun 2020 08:41:21 +0000 (18:41 +1000)]
Handle webseed Client events

4 years agoFurther progress on webseeding
Matt Joiner [Mon, 1 Jun 2020 08:25:45 +0000 (18:25 +1000)]
Further progress on webseeding

4 years agoSupport disabling webtorrent
Matt Joiner [Mon, 1 Jun 2020 08:24:46 +0000 (18:24 +1000)]
Support disabling webtorrent

4 years agocmd/torrent-verify: Fix piece hash output
Matt Joiner [Mon, 1 Jun 2020 01:16:17 +0000 (11:16 +1000)]
cmd/torrent-verify: Fix piece hash output

4 years agoRemove debug logging from storage file implementation
Matt Joiner [Mon, 1 Jun 2020 01:12:51 +0000 (11:12 +1000)]
Remove debug logging from storage file implementation