Jordan Lee [Thu, 7 Apr 2011 20:00:26 +0000 (20:00 +0000)]
(trunk libT) use get_next_scrape_time() inside the scrape error handler.
get_next_scrape_time() was introduced in r12297. The rationale is that by rounding all scrape times to their nearest 10th second, they will tend to occur in batches and improve multiscrape.
Jordan Lee [Thu, 7 Apr 2011 19:54:30 +0000 (19:54 +0000)]
(trunk libT) #3931 "'Announce is Queued' but torrent doesn't announce itself to trackers" -- add more debugging information for the next announce interval when an announce error is encountered, as requested by Sardok in comment:70 of #3931
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