diff --git a/src/preferences/options_imp.cpp b/src/preferences/options_imp.cpp index 086658c2e..653853222 100755 --- a/src/preferences/options_imp.cpp +++ b/src/preferences/options_imp.cpp @@ -138,7 +138,7 @@ options_imp::options_imp(QWidget *parent): // General tab connect(comboI18n, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); connect(checkAltRowColors, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - //add checkbox for random port + // add checkbox for random port connect(checkRandomPort, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); connect(checkShowSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); connect(checkCloseToSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); @@ -369,7 +369,7 @@ void options_imp::saveOptions() { // General preferences pref.setLocale(locale); pref.setAlternatingRowColors(checkAltRowColors->isChecked()); - //set random port + // set random port pref.setRandomPort(checkRandomPort->isChecked()); pref.setSystrayIntegration(systrayIntegration()); pref.setTrayIconStyle(TrayIcon::Style(comboTrayIcon->currentIndex())); @@ -544,7 +544,7 @@ void options_imp::loadOptions() { const Preferences pref; setLocale(pref.getLocale()); checkAltRowColors->setChecked(pref.useAlternatingRowColors()); - //get random port + // get random port checkRandomPort->setChecked(pref.useRandomPort()); checkShowSystray->setChecked(pref.systrayIntegration()); checkShowSplash->setChecked(!pref.isSlashScreenDisabled()); @@ -798,7 +798,6 @@ void options_imp::on_randomButton_clicked() { spinPort->setValue(rand() % 64512 + 1024); } - int options_imp::getEncryptionSetting() const { return comboEncryption->currentIndex(); } diff --git a/src/preferences/preferences.h b/src/preferences/preferences.h index d13ffd9c2..b75dac08e 100755 --- a/src/preferences/preferences.h +++ b/src/preferences/preferences.h @@ -77,8 +77,7 @@ public: QIniSettings::sync(); } - // General options - + // General options QString getLocale() const { return value(QString::fromUtf8("Preferences/General/Locale"), "en_GB").toString(); } @@ -86,7 +85,7 @@ public: void setLocale(const QString &locale) { setValue(QString::fromUtf8("Preferences/General/Locale"), locale); } - + bool useProgramNotification() const { return value(QString::fromUtf8("Preferences/General/ProgramNotification"), true).toBool(); } @@ -128,11 +127,11 @@ public: } bool useRandomPort() const { - return value(QString::fromUtf8("Preferences/General/RandomPort"), true).toBool(); + return value(QString::fromUtf8("Preferences/General/UseRandomPort"), false).toBool(); } void setRandomPort(bool b) { - setValue("Preferences/General/RandomPort", b); + setValue("Preferences/General/UseRandomPort", b); } bool systrayIntegration() const { @@ -1050,6 +1049,7 @@ public: setValue(QString::fromUtf8("Preferences/Connection/MaxHalfOpenConnec"), value); } + void setNetworkInterface(const QString& iface) { setValue(QString::fromUtf8("Preferences/Connection/Interface"), iface); } diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index ff6e572ec..36f771988 100755 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -113,9 +113,9 @@ QBtSession::QBtSession() , geoipDBLoaded(false), resolve_countries(false) #endif , m_tracker(0), m_shutdownAct(NO_SHUTDOWN), - m_upnp(0), m_natpmp(0), m_dynDNSUpdater(0) + m_upnp(0), m_natpmp(0), m_dynDNSUpdater(0), + m_randomPortEnabled(false) { - setRandomPortset(false); BigRatioTimer = new QTimer(this); BigRatioTimer->setInterval(10000); connect(BigRatioTimer, SIGNAL(timeout()), SLOT(processBigRatios())); @@ -282,27 +282,24 @@ void QBtSession::setQueueingEnabled(bool enable) { } } -void QBtSession::setRandomPortset(bool set) { - randomPortSet = set; -} - // Set BT session configuration void QBtSession::configureSession() { qDebug("Configuring session"); - //removed the constant modifier for Preferences Preferences pref; const unsigned short old_listenPort = getListenPort(); const unsigned short new_listenPort = pref.getSessionPort(); - if(pref.useRandomPort() && !isRandomPortset()) { // to check if the randomPort checkbox is selected - setRandomPortset(true); - srand(time(0)); - const unsigned short randomPort = rand() % USHRT_MAX + 1025; - setListeningPort(randomPort); - addConsoleMessage(tr("qBittorrent is bound to port: TCP/%1", "e.g: qBittorrent is bound to port: 6881").arg(QString::number(getListenPort()))); - pref.setSessionPort(randomPort); + if (pref.useRandomPort()) { // to check if the randomPort checkbox is selected + if (!m_randomPortEnabled) { + m_randomPortEnabled = true; + srand(time(0)); + const unsigned short randomPort = rand() % USHRT_MAX + 1025; + setListeningPort(randomPort); + addConsoleMessage(tr("qBittorrent is bound to port: TCP/%1", "e.g: qBittorrent is bound to port: 6881").arg(QString::number(getListenPort()))); + pref.setSessionPort(randomPort); + } } else { // * Ports binding - + m_randomPortEnabled = false; if (old_listenPort != new_listenPort) { qDebug("Session port changes in program preferences: %d -> %d", old_listenPort, new_listenPort); setListeningPort(new_listenPort); diff --git a/src/qtlibtorrent/qbtsession.h b/src/qtlibtorrent/qbtsession.h index 44c578571..2cb2aae18 100755 --- a/src/qtlibtorrent/qbtsession.h +++ b/src/qtlibtorrent/qbtsession.h @@ -107,8 +107,6 @@ public: inline bool isLSDEnabled() const { return LSDEnabled; } inline bool isPexEnabled() const { return PeXEnabled; } inline bool isQueueingEnabled() const { return queueingEnabled; } - bool isRandomPortset() { return randomPortSet; }; - void setRandomPortset(bool set); public slots: QTorrentHandle addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false); @@ -259,7 +257,7 @@ private: bool m_torrentExportEnabled; bool m_finishedTorrentExportEnabled; bool appendqBExtension; - bool randomPortSet; + bool m_randomPortEnabled; QString defaultSavePath; QString defaultTempPath; // IP filtering