Jordan Lee [Wed, 6 Apr 2011 23:27:11 +0000 (23:27 +0000)]
(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.
Jordan Lee [Tue, 5 Apr 2011 16:46:13 +0000 (16:46 +0000)]
(trunk libT) when processing errors in peer-io.c's event_read_cb() and tr_peerIoTryRead() functions, don't call tr_net_strerror() unless logging is turned on s.t. the string will be used.
Jordan Lee [Tue, 5 Apr 2011 15:41:51 +0000 (15:41 +0000)]
(trunk gtk) more heap pruning: in the main window's torrent list, only update the case-insensitive "collated name" of a torrent when the torrent's metadata changes (such as when a magnet link's metadata finishes downloading).
Jordan Lee [Mon, 4 Apr 2011 05:15:54 +0000 (05:15 +0000)]
(trunk libT) avoid an unnecessary malloc() + free() call when we finish downloading a block.
Pre-libevent2, this free() was useful in helping keep the peer's incoming piece data buffer from growing too large because that could be a significant amount of wasted space given enough peers. However now that we're using the libevent2 code, that piece data buffer gets handed off to the block cache, so most of the time we're freeing an evbuffer that doesn't have any inernal chains allocated anyway.
Jordan Lee [Thu, 31 Mar 2011 04:01:55 +0000 (04:01 +0000)]
(trunk libT) fix ABR detected by clang static analyzer in tr_torrentStat.
When copying a value to s->errorString, it used memcpy(a,b,sizeof(a)) where sizeof(a) was larger than sizeof(b). Fixed by replacing the memcpy() call with tr_strlcpy().
Jordan Lee [Wed, 30 Mar 2011 23:26:00 +0000 (23:26 +0000)]
(trunk libT) #4153 "Protect against non-monotonic time in libutp" -- move UTP_GetMilliseconds() and UTP_GetMicroseconds() outside of the if-not-windows ifdef section. Based on feedback from rb07 in ticket comment 5
Protect against monotonic time being non-monotonic.
Within utp.cpp, there's a bunch of assertions that will cause us
to crash if monotonic time isn't. While I have no idea about Windows,
under Unix we use real time instead of monotonic time if POSIX clocks
are not available, and real time can be stepped backwards. Since the
protection is cheap, we perform it on all platforms.
Jordan Lee [Tue, 29 Mar 2011 15:23:54 +0000 (15:23 +0000)]
(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.
Jordan Lee [Tue, 29 Mar 2011 15:18:25 +0000 (15:18 +0000)]
(trunk libT) better scrape management on private trackers.
If a private tracker scrape says that there are no downloaders in the swarm, mark all the peers in the private swarm as seeds. This can greatly reduce unnecessary overhead on large seedboxes. We don't do this same trick on public torrents, since a public tracker won't know of all the peers.
Jordan Lee [Tue, 29 Mar 2011 01:17:18 +0000 (01:17 +0000)]
(trunk libT) more completion and bitfield cleanup: (1) fix regression in tr_cpSizeWhenDone() reported by Waldorf, (2) make simple one-liner functions inlined
Jordan Lee [Mon, 28 Mar 2011 16:46:57 +0000 (16:46 +0000)]
(trunk mac) delete bitset.[ch] from the xcode file. No, I don't know what I'm doing, but what's the worst that could happen, it could break the build... :)
Jordan Lee [Mon, 28 Mar 2011 16:31:05 +0000 (16:31 +0000)]
(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