summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2020-04-16 10:10:00 +0200
committerOdd Stranne <odd@mullvad.net>2020-04-16 15:34:43 +0200
commitf77e74fe49bff7c39d97a790153e108bed5decba (patch)
treed1ab6979491256cb7e8a824e72d9c33412520b3e
parent926c13becd8a7d2075f8228be3515a91cb19428b (diff)
downloadmullvadvpn-f77e74fe49bff7c39d97a790153e108bed5decba.tar.xz
mullvadvpn-f77e74fe49bff7c39d97a790153e108bed5decba.zip
Always send initial offline notification
-rw-r--r--windows/winnet/src/winnet/offlinemonitor.cpp17
-rw-r--r--windows/winnet/src/winnet/offlinemonitor.h5
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);