mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-11 12:42:31 +00:00
* More fiddling of the throttle code.
* Fixed a bug that caused idle looping due to epoll_wait timeout using msecs rather than usecs resolution. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@590 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -53,7 +53,7 @@ void
|
||||
DownloadStore::use(const std::string& path) {
|
||||
m_path = path;
|
||||
|
||||
if (*m_path.rbegin() != '/')
|
||||
if (!m_path.empty() && *m_path.rbegin() != '/')
|
||||
m_path += '/';
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,9 @@ PollManagerEPoll::~PollManagerEPoll() {
|
||||
|
||||
void
|
||||
PollManagerEPoll::poll(utils::Timer timeout) {
|
||||
// Add 1ms to ensure we don't idle loop due to the lack of
|
||||
// resolution.
|
||||
torrent::perform();
|
||||
timeout = std::min(timeout, utils::Timer(torrent::get_next_timeout()));
|
||||
|
||||
if (m_httpStack.is_busy()) {
|
||||
@@ -101,13 +104,12 @@ PollManagerEPoll::poll(utils::Timer timeout) {
|
||||
|
||||
// Yes, below is how much code really *should* have been in this
|
||||
// function. ;)
|
||||
torrent::perform();
|
||||
|
||||
if (static_cast<torrent::PollEPoll*>(m_poll)->poll(timeout.usec() / 1000) == -1)
|
||||
if (static_cast<torrent::PollEPoll*>(m_poll)->poll((timeout.usec() + 999) / 1000) == -1)
|
||||
return check_error();
|
||||
|
||||
static_cast<torrent::PollEPoll*>(m_poll)->perform();
|
||||
torrent::perform();
|
||||
static_cast<torrent::PollEPoll*>(m_poll)->perform();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ PollManagerSelect::~PollManagerSelect() {
|
||||
|
||||
void
|
||||
PollManagerSelect::poll(utils::Timer timeout) {
|
||||
torrent::perform();
|
||||
timeout = std::min(timeout, utils::Timer(torrent::get_next_timeout()));
|
||||
|
||||
#if defined USE_VARIABLE_FDSET
|
||||
@@ -89,7 +90,6 @@ PollManagerSelect::poll(utils::Timer timeout) {
|
||||
|
||||
torrent::perform();
|
||||
static_cast<torrent::PollSelect*>(m_poll)->perform(m_readSet, m_writeSet, m_errorSet);
|
||||
torrent::perform();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user