diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 3504e30a8..faf7fffe9 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1935,7 +1935,17 @@ void Session::networkConfigurationChange(const QNetworkConfiguration& cfg) if (configuredInterfaceName.isEmpty()) return; const QString changedInterface = cfg.name(); + + // workaround for QTBUG-52633: check interface IPs, react only if the IPs have changed + // seems to be present only with NetworkManager, hence Q_OS_LINUX +#if defined Q_OS_LINUX && QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // && QT_VERSION <= QT_VERSION_CHECK(5, ?, ?) + static QStringList boundIPs = getListeningIPs(); + const QStringList newBoundIPs = getListeningIPs(); + if ((configuredInterfaceName == changedInterface) && (boundIPs != newBoundIPs)) { + boundIPs = newBoundIPs; +#else if (configuredInterfaceName == changedInterface) { +#endif Logger::instance()->addMessage(tr("Network configuration of %1 has changed, refreshing session binding", "e.g: Network configuration of tun0 has changed, refreshing session binding").arg(changedInterface), Log::INFO); configureListeningInterface(); }