2
0
mirror of synced 2025-02-24 22:58:28 +00:00

513 Commits

Author SHA1 Message Date
Matt Joiner
3c75f68413 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.
2016-07-24 00:34:40 +10:00
Matt Joiner
980cd69ab2 Break up the DHT announcer code into smaller functions, and add a 5 minute delay between announces 2016-07-23 22:38:31 +10:00
Matt Joiner
f5d58b3dc6 Unused *Client argument to Torrent.writeStatus 2016-07-12 21:23:20 +10:00
Matt Joiner
29844b8b6c Few slices name changes 2016-07-12 17:49:00 +10:00
Matt Joiner
507daba528 Rework tracker scraper code to allow tracker stats
Inspired by @axet's work.
2016-07-12 16:44:06 +10:00
Matt Joiner
6e399e8f50 Add test for issue #97 2016-07-12 16:42:54 +10:00
Matt Joiner
fbe0ded844 Add connection read stats 2016-07-12 16:42:04 +10:00
Matt Joiner
a4e140b939 New slices package 2016-07-12 16:40:14 +10:00
Matt Joiner
a6cecc6b5f missinggo.Sort->SortSlice 2016-07-07 14:14:59 +10:00
Matt Joiner
240abaf512 Add Torrent.SetMaxEstablishedConns 2016-07-06 00:42:16 +10:00
Matt Joiner
326b36545b Prepare to allow max conns per torrent to be configured 2016-07-05 16:23:17 +10:00
Matt Joiner
12191dbfa3 Add counters for uploads
Fixes #71.
2016-07-05 15:52:33 +10:00
Matt Joiner
12486412b3 Remove redundant check in Torrent.SetInfoBytes 2016-06-27 15:46:43 +10:00
Matt Joiner
afc76861e0 Throw away Torrent display name when info becomes available 2016-06-27 15:46:27 +10:00
Matt Joiner
b84298351a Move a few methods to Torrent, and track how many DHT announces occur
I suspect that DHT announces may occur too regularly, or without a break for torrents that aren't able to get over the lower water pending peer mark.
2016-06-15 15:29:47 +10:00
Matt Joiner
c2bdb31bb3 Client.announceTorrentDHT -> Torrent.announceDHT 2016-06-15 15:13:53 +10:00
Matt Joiner
d8dc3ad239 Torrent.MetaInfo: don't crash if info isn't available yet 2016-05-23 20:08:18 +10:00
Matt Joiner
56a89905b6 Update Torrent.wantPeersEvent when info is obtained 2016-05-23 11:11:56 +10:00
Matt Joiner
c6ec935e53 Update Torrent.wantPeersEvent in several places 2016-05-23 10:19:14 +10:00
Matt Joiner
512aa7ede4 Don't start tracker scrapers if trackers are disabled 2016-05-22 23:44:08 +10:00
Matt Joiner
20870ec4ff Rework torrent tracker scraping
New scrapers are added anytime trackers are added to a torrent. In the future they will also be stopped as soon as they're removed. All trackers are concurrently scraped, the old-style of sticking to one tracker that works is abandoned for now.
2016-05-22 22:45:08 +10:00
Matt Joiner
8cdcbe9d40 Fix the tracker method receivers and names 2016-05-19 23:58:00 +10:00
Matt Joiner
7600ac70e3 Move torrent tracker methods into torrent.go 2016-05-19 22:49:37 +10:00
Matt Joiner
02ea8b1081 Rename storage.I->Client 2016-05-16 21:50:43 +10:00
Matt Joiner
6f470a2d02 Don't log missing files during hashing 2016-05-16 19:50:46 +10:00
Matt Joiner
c0283d3314 Return an error from Torrent.setMetadataSize
This should mean connections sending ridiculous metadata sizes get dropped.
2016-05-16 18:48:56 +10:00
Matt Joiner
d2951c6c4b Move requestPendingMetadata onto connection from Client 2016-05-16 18:46:38 +10:00
Matt Joiner
2b46a17b39 Bit of a tidy in the tracker code 2016-05-12 12:43:37 +10:00
Matt Joiner
528836ab4c Get rid of obsoleted Torrent.ceaseNetworking, and clean up Torrent.closing 2016-05-11 21:44:55 +10:00
Matt Joiner
a45a09b877 Rework setting of info bytes 2016-05-09 15:47:39 +10:00
Matt Joiner
2d160b0419 metainfo.InfoEx.Hash becomes a function, UpdateBytes is added, and Bytes used in marshalling
Fixes #80.
2016-05-05 22:40:38 +10:00
Matt Joiner
f6b83130c9 Move a bunch of Torrent methods from client.go 2016-05-03 16:47:11 +10:00
Matt Joiner
28c9ec2bd1 Some changes to metainfo.InfoEx and testutil 2016-04-30 11:07:29 +10:00
Seth Hoenig
9f4bf70e17 refactor struct identifiers to follow conventional go names 2016-04-18 23:11:11 -05:00
Matt Joiner
da4d40ed7e Merge all our global consts and vars into global.go
For easier referral to other parties.
2016-04-14 17:19:07 +10:00
Matt Joiner
48871324f4 Comments and logs around bad metadata size 2016-04-07 19:13:51 +10:00
Matt Joiner
49a3c87a53 Fix possible deadlock 2016-04-04 20:39:57 +10:00
Matt Joiner
82ee860e8d Apply unconvert linter 2016-04-04 15:28:25 +10:00
Matt Joiner
1566e2afdc Remove deadcode 2016-04-04 15:18:51 +10:00
Matt Joiner
b80bb6393a Use metainfo.Hash for piece and info hashes 2016-04-04 13:01:31 +10:00
Matt Joiner
d3a1c79c79 Merge Torrent and torrent types 2016-04-03 18:40:43 +10:00
Matt Joiner
501ae0c98c Comments 2016-04-03 16:52:52 +10:00
Matt Joiner
08830b97a1 Make everything on type torrent private 2016-04-03 16:50:53 +10:00
Matt Joiner
bc8fb2a165 If we fail to write to a piece, check its completion state 2016-04-03 16:36:57 +10:00
Matt Joiner
a5b54f21a1 Make opening a torrent in storage an explicit method
This is storage types where opening can fail, like mmap
2016-03-28 22:40:29 +11:00
Matt Joiner
775cf53809 Get mmap storage working 2016-03-28 21:57:04 +11:00
Matt Joiner
b97b50aca9 New storage interface 2016-03-28 20:38:30 +11:00
Matt Joiner
bb04cb8843 Tidy up bytesLeft calculations
This should fix a bug where completion is shown as negative in WriteStatus
2016-03-22 13:11:36 +11:00
Matt Joiner
e2ffcd008b Add t.bytesLeftAnnounce
Now it's safe to remove tracker specific bytesLeft contract
2016-03-22 09:06:48 +11:00
Matt Joiner
61af11fddc Off by one error in torrent.pieceLength? 2016-02-21 17:25:47 +11:00