Guard the flag used for deferred session configure.

This commit is contained in:
sledgehammer999 2016-10-30 00:43:53 +03:00
parent 1757973f88
commit 5cbc7b16c0
2 changed files with 12 additions and 4 deletions

View file

@ -911,6 +911,9 @@ void Session::adjustLimits()
void Session::configure()
{
qDebug("Configuring session");
if (!m_deferredConfigureScheduled) return; // Obtaining the lock is expensive, let's check early
QWriteLocker locker(&m_lock);
if (!m_deferredConfigureScheduled) return; // something might have changed while we were getting the lock
#if LIBTORRENT_VERSION_NUM < 10100
libt::session_settings sessionSettings = m_nativeSession->settings();
configure(sessionSettings);
@ -2957,10 +2960,12 @@ void Session::initResumeFolder()
void Session::configureDeferred()
{
if (!m_deferredConfigureScheduled) {
QMetaObject::invokeMethod(this, "configure", Qt::QueuedConnection);
m_deferredConfigureScheduled = true;
}
if (m_deferredConfigureScheduled) return; // Obtaining the lock is expensive, let's check early
QWriteLocker locker(&m_lock);
if (m_deferredConfigureScheduled) return; // something might have changed while we were getting the lock
QMetaObject::invokeMethod(this, "configure", Qt::QueuedConnection);
m_deferredConfigureScheduled = true;
}
// Enable IP Filtering

View file

@ -41,6 +41,7 @@
#endif
#include <QNetworkConfigurationManager>
#include <QPointer>
#include <QReadWriteLock>
#include <QStringList>
#include <QVector>
#include <QWaitCondition>
@ -604,6 +605,8 @@ namespace BitTorrent
QNetworkConfigurationManager m_networkManager;
mutable QReadWriteLock m_lock;
static Session *m_instance;
};
}