Jordan Lee
d32c5b36c7
(trunk libT) minor CPU improvement to peer-mgr.c's bandwidthPulse()
...
We looped through all the torrents 3x to do three separate tasks... instead, loop only once and do the three tasks inside the single loop.
2011-05-10 14:41:59 +00:00
Jordan Lee
ffba6a16bd
(trunk libT) oops, r12424 included a second CPU improvement patch that I had in the pipeline. Fix a typo in that patch.
2011-05-10 05:18:40 +00:00
Jordan Lee
94cc3f87f7
(trunk libT) CPU improvement in torrent.c's torrentInit()
...
Add the new torrent to the session's torrent list by prepending it instead of appending it. That way we don't have to walk the list in order to add it. tr_session.torrentList is an unordered list, so there's no real difference between prepending and appending.
2011-05-10 04:46:44 +00:00
Jordan Lee
3aaeaddbaf
(trunk libT) CPU optimization in peer-mgr.c's rechokeDownloads()
...
Instead of recalculating interesting pieces for each peer we loop through, calculate them just once into a bitfield and then reuse that bitfield inside the loop.
2011-05-10 03:50:54 +00:00
Jordan Lee
6a38a368d6
(trunk libT) CPU improvement in peer-mgr.c's getPeerCandidates()
...
getPeerCandiates() used to read through all the torrents to determine the global peer connections, and then again to determine the global peer candidates. Now this is done in one loop instead of two.
2011-05-10 01:51:12 +00:00
Jordan Lee
841bfffff8
(trunk libT) simplify the code in peer-mgr.c's rechokeDownloads().
...
The new code has fewer calls to malloc/free and, more importantly, has less copy-and-pasted code to handle the different rechoke states.
2011-04-29 23:25:12 +00:00
Jordan Lee
92ad42e10c
(trunk libT) #4215 "bug in unchoking algorithm" -- fixed.
2011-04-29 22:39:54 +00:00
Jordan Lee
e514f93fd1
(trunk libT) in peer-mgr.c's refillUpkeep(), allocate the temporary array outside of the loop instead of inside...
2011-04-28 17:46:31 +00:00
Jordan Lee
2f95dd54e8
(trunk libT) heap pruning: lazy-allocate the array in peer-mgr.c's getPeersToClose().
2011-04-27 19:06:06 +00:00
Jordan Lee
0d31a32d41
(trunk libT) #4204 "Availability is the same as the amount downloaded when there are no seeders" -- possible fix
...
It looks like we had the wrong test on the replication count array size.
2011-04-24 22:56:42 +00:00
Jordan Lee
6a53f72481
(trunk libT) in peer-mgr's closeBadPeers() function, don't bother doing any of the setup/teardown calculations if the peer array is empty.
2011-04-07 20:15:49 +00:00
Jordan Lee
712ee263de
(trunk libT) more heap pruning: avoid four unnecessary malloc() + free() calls per tr_peer.
...
This commit also changes tr_recentHistory from being a general-purpose tool to being a little more hardcoded for the only purpose it's used, in tr_peerMgr. If its files (history.[ch]) don't find any other "customers" in libtransmission, eventually it should be demoted to being a private helper class inside of peer-mgr.c and have the history.[ch] files removed from the build.
2011-04-06 23:27:11 +00:00
Jordan Lee
492d208dc8
(trunk libT) remove unnecessary memmove()s from rechokeDownloads()
2011-04-05 00:24:25 +00:00
Jordan Lee
525d854016
(trunk libT) when reading piece data in from a socket, avoid two unnecessary calls to memcpy()
2011-04-04 04:45:41 +00:00
Jordan Lee
4a47e3c869
(trunk libT) don't bother calling rechokeUploads() and rechokeDownloads() on torrents which have no peers.
2011-04-02 08:35:47 +00:00
Jordan Lee
1b02eb8641
(trunk libT) use aggregation for the tr_bandwidth objects owned by tr_session and tr_torrent
2011-03-31 14:53:22 +00:00
Jordan Lee
5dd9b4a993
(trunk libT) fix potential UMR detected by clang static analyzer: maxPeers could be uninitialized in some pathological logic branches
2011-03-31 03:59:44 +00:00
Jordan Lee
210068410d
(trunk libT) merge tr_bitfieldTestFast() and tr_bitfieldTest()
2011-03-30 04:23:20 +00:00
Jordan Lee
3043893968
(trunk libT) fix endgame detection bug introduced in r12248
2011-03-29 22:02:27 +00:00
Jordan Lee
3e2aee0c02
(trunk libT) fix a crasher introduced yesterday in r12248
2011-03-29 21:10:20 +00:00
Jordan Lee
4230cd7786
(trunk libT) don't cache unininteresting peer addresses between sessions
...
For example, if we're both seeds, or if the peer is not connectible, don't bother caching it for the next session. If it's still alive, we'll find it up through DHT or tracker announces next time around. As with r12253, this commit's intention is to reduce the number of unproductive peer_atoms that we waste time trying to connect to.
2011-03-29 15:23:54 +00:00
Jordan Lee
7445be9a53
(trunk libT) whoops, remove 4 debugging fprintf()'s from the previous commit
2011-03-28 16:33:40 +00:00
Jordan Lee
83c0e4f011
(trunk libT) break the mac build and introduce new crashes.
...
This is partially to address #4145 "Downloads stuck at 100%" by refactoring the bitset, bitfield, and tr_completion; however, the ripple effect is larger than usual so things may get worse in the short term before getting better.
livings124: to fix the mac build, remove bitset.[ch] from xcode
2011-03-28 16:31:05 +00:00
Jordan Lee
1b825079be
(trunk libT) API cleanup of the tr_address functions to make them more consistent.
...
This is loosely related to #2910 , but only in the sense of laying the groundwork for #2910 's fix...
2011-03-25 05:34:26 +00:00
Jordan Lee
1304aa0079
(trunk libT) still fiddling around with #includes -- this time removing unncecessary libT includes from libT .c files
2011-03-25 01:41:57 +00:00
Jordan Lee
b4d36aeb54
(trunk) #4138 "use stdbool.h instead of tr_bool" -- done.
2011-03-22 15:19:54 +00:00
Jordan Lee
41238c6c5d
(trunk libT) discard out-of-range reject messages from peers.
2011-03-21 16:42:32 +00:00
Jordan Lee
3933d84e1c
(trunk libT) #4084 "after reaching seed state, no new peers are acquired" -- possible fix.
...
This revises r12110 based on feedback from sadface about the use of tr_atom.uploadOnly.
2011-03-07 14:59:47 +00:00
Jordan Lee
b4538e0625
(trunk libT) copyediting.
...
1. make some accidentally-public functions/variables private
2. comment out tr_generateAllowedSet() since we're not using it
3. argument list indentation
2011-03-07 14:33:45 +00:00
Jordan Lee
d2270852af
(trunk libT) simpler implementation of the idea behind the code removed in r12108 and r12109.
2011-03-07 04:48:46 +00:00
Jordan Lee
6b4d500c36
(trunk libT) finish r12108
2011-03-07 03:46:26 +00:00
Jordan Lee
c9897ff97a
experimental fix for #4084
2011-03-06 23:49:40 +00:00
Jordan Lee
9bf2434e14
(trunk) copyediting: remove trailing spaces from source code lines in daemon/ gtk/ libtransmission/ and utils/
2011-03-04 23:26:10 +00:00
Jordan Lee
b10aea6fcc
(trunk) #4072 "remove the 'know peer count' field in Inspector" -- remove it from libtransmission too
2011-03-04 04:50:50 +00:00
Jordan Lee
a1b81cd152
(trunk libT) fix peerDestruct() crash when peer doesn't have a corresponding atom
2011-03-04 04:45:12 +00:00
Jordan Lee
0c36e0c9de
(trunk libT) remove the unused tr_ratecontrol code. switch webseed over to using tr_bandwidth.
2011-03-03 18:33:24 +00:00
Jordan Lee
6d94a33f2d
(trunk libT) #4070 "assertion failure happens soon after startup" -- fixed.
...
Thanks to User294 for helping to track down the problem.
2011-03-03 17:28:04 +00:00
Jordan Lee
0e27f583d3
(trunk libT) #4047 "transfer speed shown as 0" -- revert r11783 ( #3950 ) because it caused speed misreporting.
2011-03-01 15:23:13 +00:00
Jordan Lee
cff172bbd5
(trunk libT) peer-mgr.c peerCallbackFunc(): Replace some "should always be true" tests with assert()s. These tests used to be useful, but I don't think they are anymore. The assert()s have been put in their place to test that theory...
2011-02-25 01:48:46 +00:00
Jordan Lee
9d95bd151d
(trunk libT) #4035 "In seed state, transmission disconnect from leechers" -- fixed.
2011-02-24 14:35:45 +00:00
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