diff options
| author | Odd Stranne <odd@mullvad.net> | 2020-04-16 10:10:00 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2020-04-16 15:34:43 +0200 |
| commit | f77e74fe49bff7c39d97a790153e108bed5decba (patch) | |
| tree | d1ab6979491256cb7e8a824e72d9c33412520b3e | |
| parent | 926c13becd8a7d2075f8228be3515a91cb19428b (diff) | |
| download | mullvadvpn-f77e74fe49bff7c39d97a790153e108bed5decba.tar.xz mullvadvpn-f77e74fe49bff7c39d97a790153e108bed5decba.zip | |
Always send initial offline notification
| -rw-r--r-- | windows/winnet/src/winnet/offlinemonitor.cpp | 17 | ||||
| -rw-r--r-- | windows/winnet/src/winnet/offlinemonitor.h | 5 |
2 files changed, 16 insertions, 6 deletions
diff --git a/windows/winnet/src/winnet/offlinemonitor.cpp b/windows/winnet/src/winnet/offlinemonitor.cpp index 5ab4ee9e1e..67a90d92f0 100644 --- a/windows/winnet/src/winnet/offlinemonitor.cpp +++ b/windows/winnet/src/winnet/offlinemonitor.cpp @@ -176,7 +176,6 @@ OfflineMonitor::OfflineMonitor ) : m_logSink(logSink) , m_notifier(notifier) - , m_connected(false) , m_netAdapterMonitor( m_logSink, std::bind(&OfflineMonitor::callback, this, _1, _2, _3), @@ -203,14 +202,22 @@ void OfflineMonitor::callback(const std::vector<MIB_IF_ROW2> &adapters, const MI { std::stringstream ss; - ss << "Connectivity changed. Machine is: " << (m_connected ? "ONLINE" : "OFFLINE"); - m_logSink->info(ss.str().c_str()); + if (previousConnectivity.has_value()) + { + ss << "Connectivity changed. Machine is: " << (*m_connected ? "ONLINE" : "OFFLINE"); + m_logSink->info(ss.str().c_str()); + } + else + { + ss << "Initial connectivity established. Machine is: " << (*m_connected ? "ONLINE" : "OFFLINE"); + m_logSink->info(ss.str().c_str()); + } - if (false == m_connected) + if (false == *m_connected) { LogAdapters(m_logSink); } - m_notifier(m_connected); + m_notifier(*m_connected); } } diff --git a/windows/winnet/src/winnet/offlinemonitor.h b/windows/winnet/src/winnet/offlinemonitor.h index e4d18fe77e..6219874687 100644 --- a/windows/winnet/src/winnet/offlinemonitor.h +++ b/windows/winnet/src/winnet/offlinemonitor.h @@ -2,6 +2,7 @@ #include <libcommon/logging/ilogsink.h> #include <mutex> +#include <optional> #include "networkadaptermonitor.h" class OfflineMonitor @@ -19,6 +20,7 @@ public: Notifier notifier, std::shared_ptr<NetworkAdapterMonitor::IDataProvider> dataProvider ); + OfflineMonitor(std::shared_ptr<common::logging::ILogSink> logSink, Notifier notifier); private: @@ -26,7 +28,8 @@ private: std::shared_ptr<common::logging::ILogSink> m_logSink; Notifier m_notifier; - bool m_connected; + std::optional<bool> m_connected; + NetworkAdapterMonitor m_netAdapterMonitor; void callback(const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, NetworkAdapterMonitor::UpdateType type); |
