]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
9 years agofs test: Missed package specifier
Matt Joiner [Thu, 1 Oct 2015 14:16:50 +0000 (00:16 +1000)]
fs test: Missed package specifier

9 years agoFix import cycle
Matt Joiner [Thu, 1 Oct 2015 14:16:25 +0000 (00:16 +1000)]
Fix import cycle

9 years agobencode: When decoding a dict, if the final key is missing its value, don't treat...
Matt Joiner [Thu, 1 Oct 2015 14:13:43 +0000 (00:13 +1000)]
bencode: When decoding a dict, if the final key is missing its value, don't treat that as an error.

I think I'm swayed here by the robustness principle/Postel's Law.

9 years agoSimplify the torrent Data interface
Matt Joiner [Thu, 1 Oct 2015 14:09:04 +0000 (00:09 +1000)]
Simplify the torrent Data interface

None of the methods are optional anymore. Removed the nasty wrappers for some data implementations. Moved data.Data back into the main torrent package. Should make it much easier to understand for people implementing their own Data implementations.

9 years agoMatch the names used in other blob implementations
Matt Joiner [Thu, 1 Oct 2015 05:41:30 +0000 (15:41 +1000)]
Match the names used in other blob implementations

9 years agoReduce UDP tracker response buffer size from 64KiB to 2KiB
Matt Joiner [Wed, 30 Sep 2015 14:36:41 +0000 (00:36 +1000)]
Reduce UDP tracker response buffer size from 64KiB to 2KiB

9 years agoTrack peer sources with a dict, and don't exceed high water mark
Matt Joiner [Mon, 28 Sep 2015 05:30:13 +0000 (15:30 +1000)]
Track peer sources with a dict, and don't exceed high water mark

9 years agoInitialize connection piece priorities lazily, and using a pool
Matt Joiner [Sat, 26 Sep 2015 07:27:35 +0000 (17:27 +1000)]
Initialize connection piece priorities lazily, and using a pool

9 years agoInclude num pieces in torrent status
Matt Joiner [Fri, 25 Sep 2015 12:05:32 +0000 (22:05 +1000)]
Include num pieces in torrent status

9 years agoAdd packed IP list
Matt Joiner [Wed, 23 Sep 2015 08:25:22 +0000 (18:25 +1000)]
Add packed IP list

This saves a lot of memory by allowing the IP blocklist to be mmap()ed in. In production with the latest level1 blocklist it's 35MB per process.

9 years agoDerp
Matt Joiner [Sun, 20 Sep 2015 11:09:55 +0000 (21:09 +1000)]
Derp

9 years agoDon't warn about zero port peers from trackers
Matt Joiner [Sun, 20 Sep 2015 11:09:10 +0000 (21:09 +1000)]
Don't warn about zero port peers from trackers

9 years agobencode: Decode very large integers as big.Int if they overflow int64
Matt Joiner [Sun, 20 Sep 2015 11:08:42 +0000 (21:08 +1000)]
bencode: Decode very large integers as big.Int if they overflow int64

9 years agoAvoid frequent allocation of piece request order iterator
Matt Joiner [Sun, 20 Sep 2015 01:29:52 +0000 (11:29 +1000)]
Avoid frequent allocation of piece request order iterator

9 years agoMerge pull request #30 from therewillbecode/patch-1
Matt Joiner [Thu, 17 Sep 2015 12:18:01 +0000 (22:18 +1000)]
Merge pull request #30 from therewillbecode/patch-1

Improved Word Flow

9 years agoImproved Word Flow
Tom [Thu, 17 Sep 2015 10:56:45 +0000 (11:56 +0100)]
Improved Word Flow

9 years agoTidy
Matt Joiner [Thu, 17 Sep 2015 02:54:03 +0000 (12:54 +1000)]
Tidy

9 years agoAdd a test for dropping a torrent before it gets the Info
Matt Joiner [Thu, 17 Sep 2015 02:53:52 +0000 (12:53 +1000)]
Add a test for dropping a torrent before it gets the Info

Really just to check the behaviour doesn't change, it was mentioned before but wasn't the actual cause of any problem.

9 years agoCount failed chunk sends against a connection
Matt Joiner [Thu, 17 Sep 2015 02:50:29 +0000 (12:50 +1000)]
Count failed chunk sends against a connection

9 years agoTweak logging
Matt Joiner [Thu, 17 Sep 2015 02:40:35 +0000 (12:40 +1000)]
Tweak logging

9 years agoReduce noise about zero port peers
Matt Joiner [Thu, 17 Sep 2015 02:39:51 +0000 (12:39 +1000)]
Reduce noise about zero port peers

9 years agoSome code missed in the last commit ಠ_ಠ
Matt Joiner [Sun, 6 Sep 2015 02:35:56 +0000 (12:35 +1000)]
Some code missed in the last commit ಠ_ಠ

9 years agoAllow subscribing to torrent piece state changes
Matt Joiner [Sun, 6 Sep 2015 02:33:22 +0000 (12:33 +1000)]
Allow subscribing to torrent piece state changes

9 years agoSome doc comments
Matt Joiner [Sun, 6 Sep 2015 02:31:23 +0000 (12:31 +1000)]
Some doc comments

9 years agofs: Update for changes in bazil.org/fuse
Matt Joiner [Sun, 23 Aug 2015 09:25:33 +0000 (19:25 +1000)]
fs: Update for changes in bazil.org/fuse

9 years agobencode: Remove trailing bytes checks, this broke the peer protocol and should be...
Matt Joiner [Sun, 23 Aug 2015 09:24:29 +0000 (19:24 +1000)]
bencode: Remove trailing bytes checks, this broke the peer protocol and should be a new API

9 years agoRevert "bencode: Trailing bytes on Unmarshal is an error"
Matt Joiner [Sun, 23 Aug 2015 09:10:22 +0000 (19:10 +1000)]
Revert "bencode: Trailing bytes on Unmarshal is an error"

This reverts commit ad73a0ea8958ed6cb15513798762be65e5c29568.

9 years agobencode: Simplify parse_int
Matt Joiner [Sun, 23 Aug 2015 07:51:24 +0000 (17:51 +1000)]
bencode: Simplify parse_int

9 years agobencode: Trailing bytes on Unmarshal is an error
Matt Joiner [Sun, 23 Aug 2015 07:47:01 +0000 (17:47 +1000)]
bencode: Trailing bytes on Unmarshal is an error

9 years agobencode: Don't allow extraneous trailing 'e's
Matt Joiner [Sun, 23 Aug 2015 07:45:59 +0000 (17:45 +1000)]
bencode: Don't allow extraneous trailing 'e's

10 years agobencode: Add tests for Unmarshalling trailing bytes, and extraneous 'e'
Matt Joiner [Sun, 23 Aug 2015 06:13:30 +0000 (16:13 +1000)]
bencode: Add tests for Unmarshalling trailing bytes, and extraneous 'e'

10 years agobencode: Fuzz
Matt Joiner [Sun, 23 Aug 2015 05:59:49 +0000 (15:59 +1000)]
bencode: Fuzz

10 years agoAdd Debug flag to Config
Matt Joiner [Sun, 23 Aug 2015 02:59:03 +0000 (12:59 +1000)]
Add Debug flag to Config

I'll use this to squash the noisy logging for people who don't care.

10 years agoAdd tests inspired by issue #27
Matt Joiner [Sun, 23 Aug 2015 02:50:32 +0000 (12:50 +1000)]
Add tests inspired by issue #27

10 years agoCode comment
Matt Joiner [Sun, 23 Aug 2015 02:49:35 +0000 (12:49 +1000)]
Code comment

10 years agoNeedlessly convoluted
Matt Joiner [Wed, 19 Aug 2015 03:29:01 +0000 (13:29 +1000)]
Needlessly convoluted

10 years agodht: Use new Msg.Args helper method
Matt Joiner [Mon, 17 Aug 2015 16:12:52 +0000 (02:12 +1000)]
dht: Use new Msg.Args helper method

10 years agodht: Remove redundant code which caused rare crash
Matt Joiner [Mon, 17 Aug 2015 16:12:27 +0000 (02:12 +1000)]
dht: Remove redundant code which caused rare crash

10 years agodht: Use passive from server config
Matt Joiner [Mon, 17 Aug 2015 16:11:48 +0000 (02:11 +1000)]
dht: Use passive from server config

10 years agodht: Improve on on Msg methods
Matt Joiner [Mon, 17 Aug 2015 16:11:09 +0000 (02:11 +1000)]
dht: Improve on on Msg methods

10 years agodht: BEP43
Matt Joiner [Mon, 17 Aug 2015 16:09:10 +0000 (02:09 +1000)]
dht: BEP43

10 years agodht: Revive the UnmarshalGetPeersResponse test
Matt Joiner [Mon, 17 Aug 2015 16:08:08 +0000 (02:08 +1000)]
dht: Revive the UnmarshalGetPeersResponse test

10 years agoRedo the compact peer types
Matt Joiner [Mon, 17 Aug 2015 09:52:47 +0000 (19:52 +1000)]
Redo the compact peer types

10 years agoUpload after a piece completes
Matt Joiner [Wed, 12 Aug 2015 07:11:14 +0000 (17:11 +1000)]
Upload after a piece completes

10 years agoAdd TestSeedAfterDownloading
Matt Joiner [Wed, 12 Aug 2015 06:51:12 +0000 (16:51 +1000)]
Add TestSeedAfterDownloading

10 years agoSeveral bad KRPC message are crying wolf
Matt Joiner [Wed, 5 Aug 2015 23:02:50 +0000 (09:02 +1000)]
Several bad KRPC message are crying wolf

10 years agodht: Support IPv6 compact peers
Matt Joiner [Wed, 5 Aug 2015 23:01:38 +0000 (09:01 +1000)]
dht: Support IPv6 compact peers

10 years agodht: Short circuit non-DHT traffic
Matt Joiner [Wed, 5 Aug 2015 22:59:30 +0000 (08:59 +1000)]
dht: Short circuit non-DHT traffic

10 years agoLog zero ports from trackers
Matt Joiner [Wed, 5 Aug 2015 22:58:13 +0000 (08:58 +1000)]
Log zero ports from trackers

10 years agoBack off on the kicked connections log
Matt Joiner [Wed, 5 Aug 2015 22:56:36 +0000 (08:56 +1000)]
Back off on the kicked connections log

10 years agoLog who's giving us zero ports over PEX
Matt Joiner [Wed, 5 Aug 2015 22:55:48 +0000 (08:55 +1000)]
Log who's giving us zero ports over PEX

In the long run this will help determine why this happens.

10 years agoutp.NewSocket now takes network parameter
Matt Joiner [Tue, 4 Aug 2015 16:51:40 +0000 (02:51 +1000)]
utp.NewSocket now takes network parameter

10 years agoClear piece touch flag from connection after a piece is hashed
Matt Joiner [Tue, 4 Aug 2015 16:43:53 +0000 (02:43 +1000)]
Clear piece touch flag from connection after a piece is hashed

10 years agoAdd an option to disable IPv6
Matt Joiner [Tue, 4 Aug 2015 16:41:50 +0000 (02:41 +1000)]
Add an option to disable IPv6

10 years agoReplacing pendingWrites WaitGroup with Mutex/Cond/int
Matt Joiner [Tue, 4 Aug 2015 16:40:46 +0000 (02:40 +1000)]
Replacing pendingWrites WaitGroup with Mutex/Cond/int

Apparently I've been using WaitGroups wrong all along.

10 years agoInvalid test
Matt Joiner [Tue, 4 Aug 2015 16:38:36 +0000 (02:38 +1000)]
Invalid test

The function is never exposed publicly or called without holding the client lock.

10 years agocmd/dht-secure-id
Matt Joiner [Tue, 4 Aug 2015 16:38:02 +0000 (02:38 +1000)]
cmd/dht-secure-id

10 years agodht: Expose SecureNodeId and NodeIdSecure
Matt Joiner [Tue, 4 Aug 2015 16:37:43 +0000 (02:37 +1000)]
dht: Expose SecureNodeId and NodeIdSecure

10 years agoImprove log message
Matt Joiner [Mon, 3 Aug 2015 15:33:50 +0000 (01:33 +1000)]
Improve log message

10 years agoDrop peers for sending too many unwanted pieces
Matt Joiner [Mon, 3 Aug 2015 15:32:45 +0000 (01:32 +1000)]
Drop peers for sending too many unwanted pieces

So the algorithm is now, drop the worst half if they get too old, and drop any connection if it's ratio is poor.

10 years agoLog errant unwanted piece rather than panic
Matt Joiner [Mon, 3 Aug 2015 15:29:40 +0000 (01:29 +1000)]
Log errant unwanted piece rather than panic

Eventually I'll work out what causes this, but for now it's incredibly rare.

10 years agodht: Count announce errors, don't log them
Matt Joiner [Mon, 3 Aug 2015 15:20:44 +0000 (01:20 +1000)]
dht: Count announce errors, don't log them

10 years agoFilter out DHT peers with port 0
Matt Joiner [Mon, 3 Aug 2015 15:20:10 +0000 (01:20 +1000)]
Filter out DHT peers with port 0

Probably not necessary now we ban the nodes that send them, but it's appropriate to check here too.

10 years agoFix crash if peer sends out of bounds HAVE message
Matt Joiner [Mon, 3 Aug 2015 15:17:32 +0000 (01:17 +1000)]
Fix crash if peer sends out of bounds HAVE message

10 years agoTighten up some potential leaks
Matt Joiner [Mon, 3 Aug 2015 15:15:09 +0000 (01:15 +1000)]
Tighten up some potential leaks

Based on some observations of lingering goroutines in unit tests.

10 years agoDrop connections that contributed to pieces that failed to hash
Matt Joiner [Mon, 3 Aug 2015 15:12:09 +0000 (01:12 +1000)]
Drop connections that contributed to pieces that failed to hash

There are peers out there that seem to intentionally spam bad data, and the same pieces will often fail continuously. This really puts a bee in their bonnet.

10 years agoAdd IPBlocklist option to Config, and test it's inherited by DHT
Matt Joiner [Mon, 3 Aug 2015 15:07:22 +0000 (01:07 +1000)]
Add IPBlocklist option to Config, and test it's inherited by DHT

10 years agoFix utp.Socket leak in test
Matt Joiner [Mon, 3 Aug 2015 14:48:17 +0000 (00:48 +1000)]
Fix utp.Socket leak in test

10 years agoAdd File.DisplayPath
Matt Joiner [Mon, 3 Aug 2015 14:45:15 +0000 (00:45 +1000)]
Add File.DisplayPath

It's used in many places, I just never formalized it. This will help prevent bugs and misuse of File.Path

10 years agoIf a DHTConfig was provided without a blocklist, the DHT wouldn't inherit the Client...
Matt Joiner [Mon, 3 Aug 2015 14:43:46 +0000 (00:43 +1000)]
If a DHTConfig was provided without a blocklist, the DHT wouldn't inherit the Client's blocklist

10 years agodht: Add PublicIP to config to secure node ID
Matt Joiner [Mon, 3 Aug 2015 14:37:16 +0000 (00:37 +1000)]
dht: Add PublicIP to config to secure node ID

10 years agodht: Block bad nodes, start by banning those that send port=0
Matt Joiner [Mon, 3 Aug 2015 14:31:53 +0000 (00:31 +1000)]
dht: Block bad nodes, start by banning those that send port=0

10 years agoSome utils moved to missinggo
Matt Joiner [Mon, 3 Aug 2015 14:29:01 +0000 (00:29 +1000)]
Some utils moved to missinggo

10 years agoReplace go-check with testify
Matt Joiner [Mon, 3 Aug 2015 06:23:05 +0000 (16:23 +1000)]
Replace go-check with testify

It's muuuuch better.

10 years agoFix locking in data/blob
Matt Joiner [Mon, 3 Aug 2015 04:24:59 +0000 (14:24 +1000)]
Fix locking in data/blob

10 years agoTrivial missed changes
Matt Joiner [Sun, 2 Aug 2015 11:00:49 +0000 (21:00 +1000)]
Trivial missed changes

10 years agoRemove clunky sentence from README
Matt Joiner [Sun, 2 Aug 2015 10:45:26 +0000 (20:45 +1000)]
Remove clunky sentence from README

10 years agoconnection.writer wasn't working efficiently
Matt Joiner [Sun, 2 Aug 2015 10:39:31 +0000 (20:39 +1000)]
connection.writer wasn't working efficiently

Because of the pseudo-random selection of a communication in a select statement, flushing was occuring prematurely. Also the buffer was needlessly large. For large messages, like outgoing pieces, it's probably better they just go straight to the wire anyway.

This change will make it easier to implement sending of pieces that doesn't block control messages in the future. Any time that the buffer is empty, we'll be able to signal that it's an optimal time to send a piece.

10 years agotracker_test: Check for the error string instead of the type
Matt Joiner [Sun, 2 Aug 2015 04:57:28 +0000 (14:57 +1000)]
tracker_test: Check for the error string instead of the type

The type changes from Go 1.4->1.5, and it's not worth tearing it apart.

10 years agoTrack connection writes and flushes
Matt Joiner [Sun, 2 Aug 2015 04:30:33 +0000 (14:30 +1000)]
Track connection writes and flushes

Helps determine efficiency of the routine.

10 years agoTrack the connection flags for completed handshakes
Matt Joiner [Sat, 1 Aug 2015 18:06:22 +0000 (04:06 +1000)]
Track the connection flags for completed handshakes

10 years agoTidy up outbound connection code
Matt Joiner [Sat, 1 Aug 2015 18:04:42 +0000 (04:04 +1000)]
Tidy up outbound connection code

Preparing to allow alternate dialing logic.

10 years agoSuppress a lot of noisy logging
Matt Joiner [Sat, 1 Aug 2015 18:01:41 +0000 (04:01 +1000)]
Suppress a lot of noisy logging

10 years agoExplicitly import Torrent.InfoHash
Matt Joiner [Sat, 1 Aug 2015 17:55:48 +0000 (03:55 +1000)]
Explicitly import Torrent.InfoHash

10 years agoComments
Matt Joiner [Sat, 1 Aug 2015 17:53:37 +0000 (03:53 +1000)]
Comments

10 years agofs: Remove errant logging
Matt Joiner [Wed, 22 Jul 2015 09:07:01 +0000 (19:07 +1000)]
fs: Remove errant logging

10 years agocmd/torrent: Remove some dead code
Matt Joiner [Tue, 21 Jul 2015 12:54:50 +0000 (22:54 +1000)]
cmd/torrent: Remove some dead code

10 years agoTorrent.BytesCompleted was racy
Matt Joiner [Tue, 21 Jul 2015 12:54:02 +0000 (22:54 +1000)]
Torrent.BytesCompleted was racy

10 years agoDon't probe pieces when setting torrent storage
Matt Joiner [Tue, 21 Jul 2015 12:52:43 +0000 (22:52 +1000)]
Don't probe pieces when setting torrent storage

It blocks the caller, for potentially quite some time. I've tested without this for some time now.

10 years agoHashing was blocking prioritization of pieces
Matt Joiner [Tue, 21 Jul 2015 12:51:15 +0000 (22:51 +1000)]
Hashing was blocking prioritization of pieces

10 years agoMove CI to drone.io
Matt Joiner [Mon, 20 Jul 2015 08:48:23 +0000 (18:48 +1000)]
Move CI to drone.io

Codeship keeps breaking, and is too painful to use.

10 years agoUpdate README
Matt Joiner [Sat, 18 Jul 2015 15:12:50 +0000 (01:12 +1000)]
Update README

10 years agoclient.go: Missing perf import
Matt Joiner [Fri, 17 Jul 2015 11:45:44 +0000 (21:45 +1000)]
client.go: Missing perf import

10 years agoSeveral speedups in logic
Matt Joiner [Fri, 17 Jul 2015 11:07:01 +0000 (21:07 +1000)]
Several speedups in logic

10 years agoDownloading a chunk may mean the piece isn't wanted anymore
Matt Joiner [Fri, 17 Jul 2015 11:04:43 +0000 (21:04 +1000)]
Downloading a chunk may mean the piece isn't wanted anymore

Hopefully this fixes a very rare logic error in replenishing connection requests for a piece that isn't wanted, yet is still in the connection piece request order.

10 years agoHold client lock as little as possible in Reader.readAt
Matt Joiner [Fri, 17 Jul 2015 10:59:26 +0000 (20:59 +1000)]
Hold client lock as little as possible in Reader.readAt

10 years agoAvoid holding client lock while scanning pieces in File.State
Matt Joiner [Fri, 17 Jul 2015 10:58:25 +0000 (20:58 +1000)]
Avoid holding client lock while scanning pieces in File.State

Some torrent data backends are expensive to query.

10 years agoStore chunk data without holding client lock
Matt Joiner [Wed, 15 Jul 2015 06:00:59 +0000 (16:00 +1000)]
Store chunk data without holding client lock

10 years agoAdd fixes triggered by TestResponsive
Matt Joiner [Wed, 15 Jul 2015 05:54:19 +0000 (15:54 +1000)]
Add fixes triggered by TestResponsive

10 years agoAdd TestResponsive
Matt Joiner [Wed, 15 Jul 2015 05:51:42 +0000 (15:51 +1000)]
Add TestResponsive