From 5d86930c800ac185125bd26e7eed6d18ae8e1e2e Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Mon, 29 Nov 2010 16:55:23 +0000 Subject: [PATCH] Fix qBtSession important initialization problem Fix qBittorrent shutdown problem (closes #682576) --- src/qtlibtorrent/qbtsession.cpp | 51 +++++++++++++++++---------------- src/qtlibtorrent/qbtsession.h | 2 +- version.pri | 4 +-- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index 3c7e873cb..9686c248f 100644 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -146,7 +146,7 @@ QBtSession::QBtSession() #endif connect(m_scanFolders, SIGNAL(torrentsAdded(QStringList&)), this, SLOT(addTorrentsFromScanFolder(QStringList&))); // Apply user settings to Bittorrent session - QTimer::singleShot(0, this, SLOT(configureSession())); + configureSession(); qDebug("* BTSession constructed"); } @@ -499,14 +499,8 @@ void QBtSession::configureSession() { disableIPFilter(); } // Update Web UI - if (pref.isWebUiEnabled()) { - const quint16 port = pref.getWebUiPort(); - const QString username = pref.getWebUiUsername(); - const QString password = pref.getWebUiPassword(); - initWebUi(username, password, port); - } else if(httpServer) { - delete httpServer; - } + // Use a QTimer because the function can be called from qBtSession constructor + QTimer::singleShot(0, this, SLOT(initWebUi())); // * Proxy settings proxy_settings proxySettings; if(pref.isProxyEnabled()) { @@ -563,24 +557,31 @@ void QBtSession::configureSession() { qDebug("Session configured"); } -bool QBtSession::initWebUi(QString username, QString password, int port) { - if(httpServer) { - if(httpServer->serverPort() != port) { - httpServer->close(); +void QBtSession::initWebUi() { + Preferences pref; + if (pref.isWebUiEnabled()) { + const quint16 port = pref.getWebUiPort(); + const QString username = pref.getWebUiUsername(); + const QString password = pref.getWebUiPassword(); + + if(httpServer) { + if(httpServer->serverPort() != port) { + httpServer->close(); + } + } else { + httpServer = new HttpServer(3000, this); } - } else { - httpServer = new HttpServer(3000, this); - } - httpServer->setAuthorization(username, password); - bool success = true; - if(!httpServer->isListening()) { - success = httpServer->listen(QHostAddress::Any, port); - if (success) - addConsoleMessage(tr("The Web UI is listening on port %1").arg(port)); - else - addConsoleMessage(tr("Web User Interface Error - Unable to bind Web UI to port %1").arg(port), "red"); + httpServer->setAuthorization(username, password); + if(!httpServer->isListening()) { + bool success = httpServer->listen(QHostAddress::Any, port); + if (success) + addConsoleMessage(tr("The Web UI is listening on port %1").arg(port)); + else + addConsoleMessage(tr("Web User Interface Error - Unable to bind Web UI to port %1").arg(port), "red"); + } + } else if(httpServer) { + delete httpServer; } - return success; } void QBtSession::useAlternativeSpeedsLimit(bool alternative) { diff --git a/src/qtlibtorrent/qbtsession.h b/src/qtlibtorrent/qbtsession.h index ffbcc8db0..61286bd5a 100644 --- a/src/qtlibtorrent/qbtsession.h +++ b/src/qtlibtorrent/qbtsession.h @@ -163,7 +163,6 @@ public slots: protected: QString getSavePath(QString hash, bool fromScanDir = false, QString filePath = QString::null, QString root_folder=QString::null); - bool initWebUi(QString username, QString password, int port); bool loadFastResumeData(QString hash, std::vector &buf); void loadTorrentSettings(QTorrentHandle h); void loadTorrentTempData(QTorrentHandle h, QString savePath, bool magnet); @@ -181,6 +180,7 @@ protected slots: void cleanUpAutoRunProcess(int); void mergeTorrents(QTorrentHandle h_ex, boost::intrusive_ptr t); void exportTorrentFile(QTorrentHandle h); + void initWebUi(); signals: void addedTorrent(const QTorrentHandle& h); diff --git a/version.pri b/version.pri index 47afc257d..8eb516d8e 100644 --- a/version.pri +++ b/version.pri @@ -1,7 +1,7 @@ os2 { - DEFINES += VERSION=\'\"v2.5.0rc3\"\' + DEFINES += VERSION=\'\"v2.5.0rc4\"\' } else { - DEFINES += VERSION=\\\"v2.5.0rc3\\\" + DEFINES += VERSION=\\\"v2.5.0rc4\\\" } DEFINES += VERSION_MAJOR=2 DEFINES += VERSION_MINOR=5