Browse Source

Merge pull request #3242 from glassez/hotfixes

Fix some #2892 regressions. Closes #3210.
adaptive-webui-19844
sledgehammer999 10 years ago
parent
commit
0172ab1f50
  1. 11
      src/core/bittorrent/session.cpp
  2. 12
      src/core/bittorrent/torrenthandle.cpp

11
src/core/bittorrent/session.cpp

@ -742,8 +742,13 @@ void Session::processBigRatios()
if (torrent->isSeed() && (torrent->ratioLimit() != TorrentHandle::NO_RATIO_LIMIT)) { if (torrent->isSeed() && (torrent->ratioLimit() != TorrentHandle::NO_RATIO_LIMIT)) {
const qreal ratio = torrent->realRatio(); const qreal ratio = torrent->realRatio();
qreal ratioLimit = torrent->ratioLimit(); qreal ratioLimit = torrent->ratioLimit();
if (ratioLimit == TorrentHandle::USE_GLOBAL_RATIO) if (ratioLimit == TorrentHandle::USE_GLOBAL_RATIO) {
ratioLimit = m_globalMaxRatio; // If Global Max Ratio is really set...
if (m_globalMaxRatio >= 0)
ratioLimit = m_globalMaxRatio;
else
continue;
}
qDebug("Ratio: %f (limit: %f)", ratio, ratioLimit); qDebug("Ratio: %f (limit: %f)", ratio, ratioLimit);
Q_ASSERT(ratioLimit >= 0.f); Q_ASSERT(ratioLimit >= 0.f);
@ -2149,6 +2154,8 @@ void Session::handleAddTorrentAlert(libtorrent::add_torrent_alert *p)
} }
saveTorrentResumeData(torrent); saveTorrentResumeData(torrent);
if ((torrent->ratioLimit() >= 0) && !m_bigRatioTimer->isActive())
m_bigRatioTimer->start();
// Send torrent addition signal // Send torrent addition signal
emit torrentAdded(torrent); emit torrentAdded(torrent);

12
src/core/bittorrent/torrenthandle.cpp

@ -39,6 +39,7 @@
#include <libtorrent/bencode.hpp> #include <libtorrent/bencode.hpp>
#include <libtorrent/address.hpp> #include <libtorrent/address.hpp>
#include <libtorrent/alert_types.hpp> #include <libtorrent/alert_types.hpp>
#include <libtorrent/create_torrent.hpp>
#include <boost/bind.hpp> #include <boost/bind.hpp>
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
@ -1258,15 +1259,8 @@ bool TorrentHandle::saveTorrentFile(const QString &path)
{ {
if (!m_torrentInfo.isValid()) return false; if (!m_torrentInfo.isValid()) return false;
// TODO: Use libtorrent::create_torrent() here! libt::create_torrent torrentCreator(*(m_torrentInfo.nativeInfo()));
libt::entry torrentEntry = torrentCreator.generate();
libt::entry meta = libt::bdecode(m_torrentInfo.metadata().data(),
m_torrentInfo.metadata().data() + m_torrentInfo.metadata().size());
libt::entry torrentEntry(libt::entry::dictionary_t);
torrentEntry["info"] = meta;
QList<TrackerEntry> trackers = m_torrentInfo.trackers();
if (!trackers.isEmpty())
torrentEntry["announce"] = trackers.first().nativeEntry().url;
QVector<char> out; QVector<char> out;
libt::bencode(std::back_inserter(out), torrentEntry); libt::bencode(std::back_inserter(out), torrentEntry);

Loading…
Cancel
Save