Commit Graph

581 Commits

Author SHA1 Message Date
Jordan Lee f4992d885c (trunk libT) if we're a partial seed and the peer has everything we have, disconnect. 2011-02-24 01:50:35 +00:00
Jordan Lee 0c6c569b69 (trunk libT) minor cleanup: improve the function names torrentConstructor() and torrentDestructor().
These functions actually allocate/free the memory where these objects reside, so it's clearer to name them torrentNew() and torrentDelete().
2011-02-23 06:18:09 +00:00
Jordan Lee bf8e4594e0 (trunk libT) minor cleanup: improve the function names peerConstructor() and peerDestructor().
These functions actually allocate/free the memory where these peer objects reside, so it's clearer to name them peerNew() and peerDelete().
2011-02-23 06:14:06 +00:00
Jordan Lee f2b4a59eda (trunk libT) #4051 "Use composition for the tr_history fields in tr_peer" -- fixed.
If we use composition on these objects we can save a handful of pointers per peer. This isn't a big deal, but it's an easy/safe change to do.
2011-02-23 06:01:16 +00:00
Jordan Lee 2b9db3c242 (trunk libT) #4048 "use bitsets instead of bitfield in tr_completion" -- done.
Excuse the sprawl. Much of this didn't fit into self-contained commits.
2011-02-23 03:54:04 +00:00
Jordan Lee 32237dbdb0 (trunk libT) remove unused functions: tr_bitsetDifference() tr_bitfieldDifference() 2011-02-21 15:36:07 +00:00
Jordan Lee 6ab918a202 (trunk libT) code cleanup: moving bitset functions to their own .c file. 2011-02-21 01:40:19 +00:00
Jordan Lee 05ff024dd8 (trunk libT) #3372 "What happened with closing idle peers?" -- fixed. 2011-02-19 12:32:41 +00:00
Jordan Lee 7a8ab0ddbe (trunk libT) closeBadPeers() part 2 of 2: this function was serving two purposes, which wasn't clear from its name. refactor slightly to make the purpose and name match. 2011-02-19 12:30:18 +00:00
Jordan Lee 1592953439 (trunk libT) closeBadPeers() part 1 of 2: don't bother sorting these peers by activity -- we're closing -all- of them, so sorting them is pointless. 2011-02-19 12:24:00 +00:00
Jordan Lee 80d06d4c34 (trunk libT) add a bool to tr_peer_stat and the RPC peer list to denote whether or not a peer's connected via µTP 2011-02-18 04:07:43 +00:00
Jordan Lee 8e87147c61 (trunk libT) add a stub for UTP_Close() s.t. peer-mgr.c doesn't need the #ifdefs from r11960 2011-02-18 01:06:42 +00:00
Jordan Lee cd04051de8 add configure script switch to enable/disable utp 2011-02-18 00:45:44 +00:00
Juliusz Chroboczek 828c9888b0 Don't attempt uTP connexions to peers learned from PEX that didn't signal support. 2011-02-18 00:43:49 +00:00
Juliusz Chroboczek 07addc7d0d Try uTP connections by default. 2011-02-18 00:43:37 +00:00
Juliusz Chroboczek 704f984bdf Implement atom->utp_failed and peerMgrSetUpFailed. 2011-02-18 00:43:31 +00:00
Juliusz Chroboczek 25b8d08537 When uTP is enabled, open uTP connections to some peers.
Since we don't implement falling back to TCP yet, we're very
conservative: we only use uTP when we have good reasons to believe
the peer speaks uTP.
2011-02-18 00:43:24 +00:00
Jordan Lee f00799f80c if we successfully finish a handshake using uTP, mark the peer as supporting uTP 2011-02-18 00:41:06 +00:00
Juliusz Chroboczek 88f4eac81f Implement outgoing uTP connections. 2011-02-18 00:36:19 +00:00
Jordan Lee 7df7d34f6d automake/autoconf; #includes in libtransmission 2011-02-18 00:32:19 +00:00
Juliusz Chroboczek 130006fcb1 Propagate uTP and ut_holepunch information over PEX. 2011-02-18 00:24:48 +00:00
Juliusz Chroboczek 8599d7c037 Modify peer-io to work with UTP sockets.
This is not supposed to work yet -- it just adds new fields to the data
structures to get the UTP code to compile.
2011-02-18 00:23:51 +00:00
Jordan Lee ee4317600d (trunk libT) #3767 "rarest first policy" -- disable the assertReplicationCountIsExact() assertion 2011-02-17 13:00:11 +00:00
Jordan Lee 77bdb6522d (trunk libT) #3767 "rarest first policy" -- possible fix for assertion error reported by rolcol
Resolve the problem described @ https://trac.transmissionbt.com/ticket/3767#comment:38
2011-02-17 12:57:36 +00:00
Jordan Lee 5dffc2814d (trunk libT) #3767 "rarest first policy" -- fixed.
This commit, started by a patch from athy, implements a rarest first policy when deciding which pieces to request from peers. It keeps a count of how many peers have each piece, and updates the count when getting bitfields, have, have all, and have none messages, as well as decrementing the counts when peers disconnect.

This running total is generated only for downloading torrents. Seeds don't have this overhead.
2011-02-17 05:14:53 +00:00
Jordan Lee d591767941 (trunk libT) #3656 "endgame could be faster" -- fixed. Patch by harrydb. 2011-02-15 16:04:56 +00:00
Jordan Lee 2b8124d3ad (trunk) #4019 "Minor patch, kill useless casts in transmission source." -- fixed. patch by jlouis
jlouis used Coccinelle to scan transmission's source for redundant code that casts a type to its own type.
2011-02-12 17:27:47 +00:00
Jordan Lee 4fbd6d8b19 (trunk libT) #3950 "use libevent's cached gettimeofday() value when appropriate" -- fixed. 2011-01-29 18:59:23 +00:00
Jordan Lee 879a2afcbd Update the copyright year in the source code comments.
The Berne Convention says that the copyright year is moot, so instead of adding another year to each file as in previous years, I've removed the year altogether from the source code comments in libtransmission, gtk, qt, utils, daemon, and cli.

Juliusz's copyright notice in tr-dht and Johannes' copyright notice in tr-lpd have been left alone; it didn't seem appropriate to modify them.
2011-01-19 13:48:47 +00:00
Jordan Lee 8aa0f36a37 cleanup of who calls the libtransmission thread locking functions.
In some cases we were calling them from deep inside libtransmission, when they should have been called directly from the public-visible API functions: tr_torrentWebSpeeds_KBps(), tr_torrentPeers(), tr_torrentTrackers().
2011-01-18 23:44:36 +00:00
Jordan Lee 7ce0cf2322 code cleanup for tr_peerMgrTorrentAvailability().
1. move responsibility for getting a thread lock back to the public API fucntion, tr_torrentAvailability().
2. if the torrent doesn't have metadata, stop after zeroing out the table
3. minor code formatting cleanup
2011-01-18 22:51:29 +00:00
Jordan Lee 7f01f0c3ee #3911: tr_peerMgrTorrentAvailability() doesn't sample across the entire torrent' -- fixed. 2011-01-18 22:21:09 +00:00
Jordan Lee dd77485d83 (trunk libT) demote the remaining lazy-verify debug messages from the debug window to deep logging 2011-01-18 02:17:47 +00:00
Juliusz Chroboczek 5ac1cba6ed Make ensureAtomExists add to the flags of an existing atom.
Flags are cumulative -- if we learn that a given peer groks encryption
from one source, and that it accepts incoming connections from another,
then the relevant atom should have both flags.
2011-01-16 15:51:48 +00:00
Juliusz Chroboczek 96141bdbff Consolidate both versions of tr_isPex into a single function.
There used to be two versions of tr_isPex; one correct in peer-mgr.c,
and one buggy in resume.c.  The buggy version caused us to reject all
peers with non-trivial flags when resuming.
2011-01-16 15:47:09 +00:00
Jordan Lee 6dc03f471e (trunk libT) #3519 "webseeds don't work" -- fixed. 2011-01-06 01:00:21 +00:00
Charles Kerr e5bb3205a1 (trunk) Join the 21st century and use only 1 space at the end sentences. This commit is nearly as important as the semi-annual ones that remove trailing spaces from the ends of lines of code... :) 2010-12-27 19:18:17 +00:00
Charles Kerr ae84dc70dd (trunk libT) #3836 "libevent2 support" -- finish moving to the libevent2 API mode. don't include the backwards-compatable API headers. 2010-12-24 08:58:41 +00:00
Mitchell Livingston cf6866b7e8 follow the convention ftw 2010-12-23 02:39:03 +00:00
Mitchell Livingston 8c4f3549c7 #3595 Allow promotion of the "from" value in peer_atom (and still show where it was first discovered) 2010-12-23 02:35:21 +00:00
Charles Kerr dc4880a477 (trunk libT) revert experimental patch r11527 from #3658 2010-12-20 12:44:16 +00:00
Charles Kerr 4ca695c090 (trunk libT) #3656 "endgame could be faster" -- revert the test code from r11528 2010-12-14 18:36:31 +00:00
Charles Kerr f8355d654f (trunk libT) #3242 "use added.f's 'connectable' flag" -- added. 2010-12-14 18:33:48 +00:00
Charles Kerr 79d4967ee6 (trunk libT) #3656 "endgame could be faster" -- another experimental patch, added to trunk for reality testing in the nightly builds. 2010-12-12 23:29:52 +00:00
Charles Kerr 492c4bbe0b (trunk libT) #3658 "don't initiate new peer connections if our bandwidth is maxed out" -- added to trunk for nightly build users to kick around a bit. this is an experimental patch and I'm not sure how I feel about it. 2010-12-12 23:27:30 +00:00
Charles Kerr 43ed57b278 (trunk libT) #2955 "Lazy Verification (aka Just-in-Time Verification)" -- implemented. 2010-12-09 20:43:23 +00:00
Charles Kerr aa79cbcbf2 (trunk libT) #3600 "Improve rechokeDownloads' peer limiter" -- fixed with patch from Longinus00 2010-12-04 17:17:44 +00:00
Charles Kerr c064ef3c79 (trunk libT) #3682 "reduce memory footprint caused by tr_history" -- done. Patch by Longinus00 2010-11-16 15:17:34 +00:00
Charles Kerr 01ab067e9c (trunk libT) #3662 "libtransmission cpu optimization: fewer calls to tr_time_msec()" -- fixed. 2010-10-24 01:08:08 +00:00
Charles Kerr 1f9e305e30 (trunk libT) #3596 "optimistic unchoke timer is too short" -- fixed. 2010-10-13 03:56:25 +00:00
Charles Kerr 6c3d651ffe (trunk) #3618 "FreeBSD 8.1 & GCC 4.2.1 compiler warnings" -- fix some compiler warnings. 2010-10-11 21:44:46 +00:00
Charles Kerr 91cc3f4a2d (trunk libT) #3329 "connection problems when downloading" -- apply Longinus00's fixSlowStart.diff 2010-10-01 18:16:01 +00:00
Daniel Lee 04aee3c49b (libt) remove jump discontinuities in getMaxAtomCount 2010-09-25 00:38:49 +00:00
Daniel Lee afc7c5355e (libT) #3453:Torrent does not stop when set per torrent seed ratio is reached before torrent is completed
(libT) #3578:Interested flag isn't cleared when transitioning from leeching to seeding
2010-09-25 00:34:15 +00:00
Charles Kerr bbd0391f01 (trunk libT) fix unchoke regression 2010-09-20 20:32:40 +00:00
Charles Kerr 9772cdb14d (trunk libT) #3568 "don't optimistically unchoke torrents when our bandwidth is maxed out" -- fixed. 2010-09-19 01:04:49 +00:00
Charles Kerr a105132d11 (trunk libT) #3475 "'"stop seeding when inactive' doesn't appear to work" -- experimental fix 2010-08-03 01:25:23 +00:00
Mitchell Livingston fd0dd10419 First go at #2560 "inactive seeding time limit". libtransmission and Mac support are currently implemented. 2010-07-16 03:12:57 +00:00
Charles Kerr 6f5c9dcafb (trunk libt) rename tr_date() as tr_time_msec() for clarity 2010-07-11 20:49:19 +00:00
Charles Kerr d4816f7461 (trunk libT) remove some debugging printf()s that were accidentally committed in r10941 2010-07-05 22:49:07 +00:00
Charles Kerr d088b289dd (trunk libT) isPeerCandidate(): sort the filter tests in order of those that get the mosts hits 2010-07-04 20:40:34 +00:00
Charles Kerr 6e5af03d78 (trunk) #3045 "speed units" -- change the public API of libtransmission based on feedback from livings 2010-07-04 06:07:21 +00:00
Charles Kerr cdcc4705aa (trunk) #3045 "make libtransmission's API byte-oriented instead of KiB-oriented." -- implemented. This is a largish commit and will break the mac build for a little while. 2010-07-03 00:25:22 +00:00
Charles Kerr e6d136f724 (trunk libT) #1521 "memory cache to reduce disk IO" -- improve one of the debugging messages 2010-07-01 16:26:30 +00:00
Charles Kerr 77c43d3f66 (trunk libT) add randomness to the peer unchoking algorithm 2010-06-27 01:24:48 +00:00
Charles Kerr acd0e77901 (trunk libT) #3329 "connection problems when downloading" -- when deciding which peer to connect to, take download/seed status into account 2010-06-26 18:49:31 +00:00
Charles Kerr e70ed9a2e8 (trunk libT) #3329 "connection problems when downloading" -- raise MAX_CONNECTIONS_PER_SECOND up the higher value used in 1.93 2010-06-26 17:54:19 +00:00
Charles Kerr 98cec85e46 (trunk libT) #3311 "MingW build of Transmission" -- apply further win32 diffs from rb07 2010-06-25 20:36:10 +00:00
Charles Kerr 7e239e932e (trunk) #3320: "If the seed ratio is already met when download completes, the Mac callback options do not occur" -- possible fix. needs confirmation from OP or BMW 2010-06-25 06:57:34 +00:00
Charles Kerr 16f1ebefce (trunk libT) when comparing peer speed to decide which peers to unchoke, use different criteria for seeding, downloading public, and downloading private. Loosely related to #3334. 2010-06-23 04:36:16 +00:00
Charles Kerr 7e9ba59807 (trunk libT) minor procedural tweak to tr_peerMgrPeerStats() inspired by #3334 2010-06-22 20:39:19 +00:00
Charles Kerr 610c912c5a (trunk libT) #3329 "connection problems when downloading" -- randomize the peer arrays so that all untested peers will have an equal chance of being used. Suggested by Longinus00 2010-06-22 16:31:38 +00:00
Charles Kerr db44d81b24 (trunk) #3256 "libtransmission/publish.[ch] should be replaced" -- apply publish.diff for 2.10 2010-06-19 14:33:10 +00:00
Charles Kerr e70bebf930 (trunk) #1521 "memory cache to reduce disk IO" -- commit block-cache-rc1.diff to trunk for the nightlies. 2010-06-19 14:25:11 +00:00
Charles Kerr a5e708c824 (trunk libT) rejigger the filter order again, based on profiling in cachegrind 2010-06-14 12:48:28 +00:00
Charles Kerr 38a254ba78 (trunk libT) as long as I'm committing these CPU tweaks, might as well throw in #3289 too. To undo all this, we can revert to r10745 2010-06-14 12:01:50 +00:00
Charles Kerr 89201ab829 (trunk libT) when filtering out peers that aren't candidates, use the fastest filter tests first, so that the more expensive tests will be applied to fewer peers. In particular, call peerIsInUse() last. 2010-06-14 11:57:46 +00:00
Charles Kerr f0a70d77b6 (trunk libT) experimental commit 2010-06-14 03:42:54 +00:00
Charles Kerr ec79257999 (trunk libT) add a much faster (but more complicated) implementation of comparePeerCandidates(). For testing in the nightlies, leave both and the new implementations in the code and run them both (which will make the nightlies slower for awhile) and crash if the results differ from each other. When it doesn't crash anymore I'll remove the old implementation. Happy testing! >:)
-place and compare them to make sure they both give the same results.  If no testers can make it crash
2010-06-14 01:56:03 +00:00
Charles Kerr 48f9d61ba1 (trunk libT) small speed improvements to comparePeerCandidates() 2010-06-13 23:06:50 +00:00
Mitchell Livingston 493f5afa6a trivial improvement to compareSeedProbabilities() 2010-06-13 20:54:03 +00:00
Charles Kerr a33be6c4b8 (trunk libT) speedups to comparePeerCandidates() 2010-06-13 17:17:33 +00:00
Charles Kerr cf3417b2cd (trunk libT) lower the max # of outbound peer connections a little 2010-06-04 16:48:36 +00:00
Charles Kerr fcda98c86f (trunk libT) promote PEX peers up the food chain a little bit 2010-05-19 15:53:09 +00:00
Charles Kerr 2b9ab542cb (trunk) #3060 "Local Peer Discovery" -- in the code, rename LDS as LPD for Local Peer Discovery 2010-05-08 08:42:45 +00:00
Charles Kerr 5a34347f4f (trunk) #3060 -- Local Peer Discovery patch from Eszet 2010-05-01 16:04:00 +00:00
Charles Kerr 97affa46a9 (trunk libT) #2609 "Leave 5% of connection slots for incoming connections" -- implemented in trunk for 2.00 2010-04-29 03:21:54 +00:00
Charles Kerr 9d3e02ce5c (trunk libT) #2993 '"Downloaded" much greater than "Have" or "verified"' -- tweak the download throttle algorithm a bit to try & address the slowness reported by Rolcol @ http://trac.transmissionbt.com/ticket/2993#comment:42 2010-04-22 03:12:31 +00:00
Charles Kerr 546bca723b (trunk libT) #3159 "better decision-making when choosing which peers to initiate new connections with" -- experimental commit 2010-04-20 21:54:03 +00:00
Charles Kerr b7827565ee (trunk libT) #1869 "new status for torrents that reach seed ratio" -- possible fix for the bug reported by leena 2010-04-15 13:43:54 +00:00
Charles Kerr 0193a577b9 (trunk libT) increase request TTL to 120 seconds 2010-03-22 02:27:57 +00:00
Charles Kerr fe3d9ed95a (trunk) one of the least interesting commits ever: remove trailing spaces from source code lines... 2010-03-17 17:07:40 +00:00
Charles Kerr 1d8d9d8447 (trunk libT) code cleanup: after r10346, we don't need to keep the per-torrent cancel/block histories anymore 2010-03-10 15:55:00 +00:00
Charles Kerr 3aa3ec7d14 (trunk libT) #2993 "'Downloaded' much greater than 'Have' or 'Verified'" -- tweak the new throttle code based on slow download feedback from gn0s1s in irc, from Rascal @ http://trac.transmissionbt.com/ticket/2993#comment:29, and from AGSystem @ http://forum.transmissionbt.com/viewtopic.php?p=45631&f=1#p45631 2010-03-10 15:34:27 +00:00
Charles Kerr b850349479 (trunk) #2993 "'Downloaded' much greater than 'Have' or 'verified'" -- add new congestion-based throttle for 2.0 2010-03-08 04:29:58 +00:00
Charles Kerr b1a29969fe (trunk libT) disable the comparePieceByWeight assertions in trunk too. 2010-03-07 22:56:14 +00:00
Charles Kerr 095cc3e05f (trunk libT) "don't cancel requests for blocks that we're downloading from slow peers" -- fixed in trunk for 1.92 2010-03-06 14:56:15 +00:00
Charles Kerr 2be28fe9dd (trunk libT) #2993 "'Downloaded' much greater than 'Have' or 'Verified'" -- found a weighted piece sorting issue while trying to confirm or refute this issue. 2010-03-03 04:16:18 +00:00
Charles Kerr f1221f958f (trunk libT) dead code removal -- the buffer & buflen arguments to tr_ioTestPiece() were unused 2010-02-23 06:05:18 +00:00
Charles Kerr 1499f5c405 (trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92(trunk libT) #2906 "remove unused code: Torrent.requests array is never sorted by time" -- added to trunk for 1.92 2010-02-22 15:07:14 +00:00