mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-31 20:58:07 -06:00
Revise interface of port forwarder
This eases the usage of port forwarder as the caller code doesn't need to store previous used port and now can rely on port forwarder doing all the hard work. PR #17967.
This commit is contained in:
@@ -50,25 +50,21 @@ void WebUI::configure()
|
||||
{
|
||||
m_isErrored = false; // clear previous error state
|
||||
|
||||
Preferences *const pref = Preferences::instance();
|
||||
|
||||
const quint16 oldPort = m_port;
|
||||
m_port = pref->getWebUiPort();
|
||||
const QString portForwardingProfile = u"webui"_qs;
|
||||
const Preferences *pref = Preferences::instance();
|
||||
const quint16 port = pref->getWebUiPort();
|
||||
|
||||
if (pref->isWebUiEnabled())
|
||||
{
|
||||
// UPnP/NAT-PMP
|
||||
// Port forwarding
|
||||
auto *portForwarder = Net::PortForwarder::instance();
|
||||
if (pref->useUPnPForWebUIPort())
|
||||
{
|
||||
if (m_port != oldPort)
|
||||
{
|
||||
Net::PortForwarder::instance()->deletePort(oldPort);
|
||||
Net::PortForwarder::instance()->addPort(m_port);
|
||||
}
|
||||
portForwarder->setPorts(portForwardingProfile, {port});
|
||||
}
|
||||
else
|
||||
{
|
||||
Net::PortForwarder::instance()->deletePort(oldPort);
|
||||
portForwarder->removePorts(portForwardingProfile);
|
||||
}
|
||||
|
||||
// http server
|
||||
@@ -81,7 +77,7 @@ void WebUI::configure()
|
||||
else
|
||||
{
|
||||
if ((m_httpServer->serverAddress().toString() != serverAddressString)
|
||||
|| (m_httpServer->serverPort() != m_port))
|
||||
|| (m_httpServer->serverPort() != port))
|
||||
m_httpServer->close();
|
||||
}
|
||||
|
||||
@@ -112,15 +108,15 @@ void WebUI::configure()
|
||||
{
|
||||
const auto address = ((serverAddressString == u"*") || serverAddressString.isEmpty())
|
||||
? QHostAddress::Any : QHostAddress(serverAddressString);
|
||||
bool success = m_httpServer->listen(address, m_port);
|
||||
bool success = m_httpServer->listen(address, port);
|
||||
if (success)
|
||||
{
|
||||
LogMsg(tr("Web UI: Now listening on IP: %1, port: %2").arg(serverAddressString).arg(m_port));
|
||||
LogMsg(tr("Web UI: Now listening on IP: %1, port: %2").arg(serverAddressString).arg(port));
|
||||
}
|
||||
else
|
||||
{
|
||||
const QString errorMsg = tr("Web UI: Unable to bind to IP: %1, port: %2. Reason: %3")
|
||||
.arg(serverAddressString).arg(m_port).arg(m_httpServer->errorString());
|
||||
.arg(serverAddressString).arg(port).arg(m_httpServer->errorString());
|
||||
LogMsg(errorMsg, Log::CRITICAL);
|
||||
qCritical() << errorMsg;
|
||||
|
||||
@@ -144,7 +140,7 @@ void WebUI::configure()
|
||||
}
|
||||
else
|
||||
{
|
||||
Net::PortForwarder::instance()->deletePort(oldPort);
|
||||
Net::PortForwarder::instance()->removePorts(portForwardingProfile);
|
||||
|
||||
delete m_httpServer;
|
||||
delete m_webapp;
|
||||
|
||||
@@ -66,5 +66,4 @@ private:
|
||||
QPointer<Http::Server> m_httpServer;
|
||||
QPointer<Net::DNSUpdater> m_dnsUpdater;
|
||||
QPointer<WebApplication> m_webapp;
|
||||
quint16 m_port = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user