summaryrefslogtreecommitdiffhomepage
path: root/windows/windns/src
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2018-10-05 21:09:03 +0200
committerOdd Stranne <odd@mullvad.net>2018-10-06 23:12:19 +0200
commitf4baf026b6aff919356dc9d9e8b3b00a0409ee03 (patch)
treec5fc2a7f20f646e0e1c66c40e1b8196a1bbcafc3 /windows/windns/src
parent4a6bb4210b5e0e96f076358a87c8cf64feb1934c (diff)
downloadmullvadvpn-f4baf026b6aff919356dc9d9e8b3b00a0409ee03.tar.xz
mullvadvpn-f4baf026b6aff919356dc9d9e8b3b00a0409ee03.zip
Make ConfineOperation take an ILogSink directly
Diffstat (limited to 'windows/windns/src')
-rw-r--r--windows/windns/src/windns/confineoperation.cpp18
-rw-r--r--windows/windns/src/windns/confineoperation.h8
-rw-r--r--windows/windns/src/windns/recoverylogic.cpp9
-rw-r--r--windows/windns/src/windns/windnscontext.cpp7
4 files changed, 29 insertions, 13 deletions
diff --git a/windows/windns/src/windns/confineoperation.cpp b/windows/windns/src/windns/confineoperation.cpp
index 5c16de71bf..a43bbd0d2e 100644
--- a/windows/windns/src/windns/confineoperation.cpp
+++ b/windows/windns/src/windns/confineoperation.cpp
@@ -50,6 +50,24 @@ bool ConfineOperation
}
}
+bool ConfineOperation
+(
+ const char *literalOperation,
+ ILogSink *logSink,
+ std::function<void()> operation
+)
+{
+ auto ForwardError = [logSink](const char *error, const char **details, uint32_t numDetails)
+ {
+ if (nullptr != logSink)
+ {
+ logSink->error(error, details, numDetails);
+ }
+ };
+
+ return ConfineOperation(literalOperation, ForwardError, operation);
+}
+
std::vector<uint8_t> CreateRawStringArray(const std::vector<std::string> &arr)
{
//
diff --git a/windows/windns/src/windns/confineoperation.h b/windows/windns/src/windns/confineoperation.h
index 21fe7dd996..4c37058da2 100644
--- a/windows/windns/src/windns/confineoperation.h
+++ b/windows/windns/src/windns/confineoperation.h
@@ -1,5 +1,6 @@
#pragma once
+#include "ilogsink.h"
#include <functional>
#include <vector>
#include <string>
@@ -12,6 +13,13 @@ bool ConfineOperation
std::function<void()> operation
);
+bool ConfineOperation
+(
+ const char *literalOperation,
+ ILogSink *logSink,
+ std::function<void()> operation
+);
+
//
// The returned buffer looks like this:
//
diff --git a/windows/windns/src/windns/recoverylogic.cpp b/windows/windns/src/windns/recoverylogic.cpp
index 6221c3c2b0..70fe0b8a91 100644
--- a/windows/windns/src/windns/recoverylogic.cpp
+++ b/windows/windns/src/windns/recoverylogic.cpp
@@ -14,16 +14,11 @@ void RecoveryLogic::RestoreInterfaces(const RecoveryFormatter::Unpacked &data,
throw std::runtime_error("Invalid logger sink");
}
- auto forwardError = [logSink](const char *msg, const char **details, uint32_t numDetails)
- {
- logSink->error(msg, details, numDetails);
- };
-
bool success = true;
for (const auto &snap : data.v4Snaps)
{
- const auto status = ConfineOperation("Reset interface DNS settings", forwardError, [&snap, &timeout]()
+ const auto status = ConfineOperation("Reset interface DNS settings", logSink, [&snap, &timeout]()
{
if (snap.internalInterface())
{
@@ -71,7 +66,7 @@ void RecoveryLogic::RestoreInterfaces(const RecoveryFormatter::Unpacked &data,
for (const auto &snap : data.v6Snaps)
{
- const auto status = ConfineOperation("Reset interface DNS settings", forwardError, [&snap, &timeout]()
+ const auto status = ConfineOperation("Reset interface DNS settings", logSink, [&snap, &timeout]()
{
if (snap.internalInterface())
{
diff --git a/windows/windns/src/windns/windnscontext.cpp b/windows/windns/src/windns/windnscontext.cpp
index cf80c0e619..7c95358652 100644
--- a/windows/windns/src/windns/windnscontext.cpp
+++ b/windows/windns/src/windns/windnscontext.cpp
@@ -18,12 +18,7 @@ WinDnsContext::WinDnsContext(ILogSink *logSink)
WinDnsContext::~WinDnsContext()
{
- auto forwardError = [this](const char *msg, const char **details, uint32_t numDetails)
- {
- m_logSink->error(msg, details, numDetails);
- };
-
- ConfineOperation("Reset DNS settings", forwardError, [this]()
+ ConfineOperation("Reset DNS settings", m_logSink, [this]()
{
this->reset();
});