diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 787d3849a..e97eb4484 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -1261,11 +1261,7 @@ void MainWindow::readSettings() checkMpdDir(); #ifdef TAGLIB_FOUND Covers::self()->setSaveInMpdDir(Settings::self()->storeCoversInMpdDir()); - if (Settings::self()->enableHttp()) { - HttpServer::self()->setDetails(Settings::self()->httpAddress(), Settings::self()->httpPort()); - } else { - HttpServer::self()->setDetails(QString(), 0); - } + HttpServer::self()->readConfig(); #endif #ifdef ENABLE_DEVICES_SUPPORT StdActions::self()->deleteSongsAction->setVisible(Settings::self()->showDeleteAction()); diff --git a/http/httpserver.cpp b/http/httpserver.cpp index d12971b76..8dca9eb91 100644 --- a/http/httpserver.cpp +++ b/http/httpserver.cpp @@ -62,9 +62,12 @@ void HttpServer::stop() } } -bool HttpServer::setDetails(const QString &addr, quint16 port) +bool HttpServer::readConfig() { - if (socket && port==socket->serverPort() && addr==socket->configuredAddress()) { + QString addr=Settings::self()->httpAddress(); + quint16 port=Settings::self()->httpPort(); + + if (socket && socket->isListening() && port==socket->serverPort() && addr==socket->configuredAddress() && Settings::self()->enableHttp()) { return true; } @@ -79,7 +82,7 @@ bool HttpServer::setDetails(const QString &addr, quint16 port) thread=0; } - if (0!=port) { + if (Settings::self()->enableHttp()) { thread=new QThread(0); socket=new HttpSocket(addr, port); socket->moveToThread(thread); diff --git a/http/httpserver.h b/http/httpserver.h index c355cae03..0d68a1f81 100644 --- a/http/httpserver.h +++ b/http/httpserver.h @@ -47,7 +47,7 @@ public: void stop(); bool isAlive() const; - bool setDetails(const QString &addr, quint16 port); + bool readConfig(); QString address() const; bool isOurs(const QString &url) const; QByteArray encodeUrl(const Song &s) const; diff --git a/http/httpserversettings.cpp b/http/httpserversettings.cpp index 8acd73ceb..39cad83ce 100644 --- a/http/httpserversettings.cpp +++ b/http/httpserversettings.cpp @@ -40,7 +40,7 @@ void HttpServerSettings::load() int port=Settings::self()->httpPort(); enableHttp->setChecked(Settings::self()->enableHttp()); alwaysUseHttp->setChecked(Settings::self()->alwaysUseHttp()); - httpPort->setValue(port<1024 ? 1023 : port); + httpPort->setValue(port); httpAddress->setText(Settings::self()->httpAddress()); } @@ -50,6 +50,7 @@ void HttpServerSettings::save() Settings::self()->saveAlwaysUseHttp(alwaysUseHttp->isChecked()); Settings::self()->saveHttpPort(httpPort->value()); Settings::self()->saveHttpAddress(httpAddress->text()); + HttpServer::self()->readConfig(); QTimer::singleShot(250, this, SLOT(updateStatus())); } diff --git a/http/httpserversettings.ui b/http/httpserversettings.ui index 637c15e96..0a3d64a38 100644 --- a/http/httpserversettings.ui +++ b/http/httpserversettings.ui @@ -79,7 +79,7 @@ - 1023 + 0 65535 diff --git a/http/httpsocket.cpp b/http/httpsocket.cpp index e8cb346c0..452d2ea07 100644 --- a/http/httpsocket.cpp +++ b/http/httpsocket.cpp @@ -180,18 +180,18 @@ HttpSocket::HttpSocket(const QString &addr, quint16 p) } } - if (listen(QHostAddress::Any, p<1024 ? 0 : p)) { + if (listen(QHostAddress::Any, p)) { ifaceAddress=a.isNull() ? serverAddress().toString() : a.toString(); } else { // Failed to liston on 'Any' address if (addr.isEmpty()) { // No specific address was set, so fallback to loopback address... - listen(QHostAddress::LocalHost, p<1024 ? 0 : p); + listen(QHostAddress::LocalHost, p); ifaceAddress=QLatin1String("127.0.0.1"); } else { // Listen probably failed due to proxy, so unset and try again! setProxy(QNetworkProxy::NoProxy); - listen(QHostAddress::Any, p<1024 ? 0 : p); + listen(QHostAddress::Any, p); ifaceAddress=a.isNull() ? serverAddress().toString() : a.toString(); } }