diff options
| author | Odd Stranne <odd@mullvad.net> | 2018-10-05 21:09:03 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2018-10-06 23:12:19 +0200 |
| commit | f4baf026b6aff919356dc9d9e8b3b00a0409ee03 (patch) | |
| tree | c5fc2a7f20f646e0e1c66c40e1b8196a1bbcafc3 /windows/windns/src | |
| parent | 4a6bb4210b5e0e96f076358a87c8cf64feb1934c (diff) | |
| download | mullvadvpn-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.cpp | 18 | ||||
| -rw-r--r-- | windows/windns/src/windns/confineoperation.h | 8 | ||||
| -rw-r--r-- | windows/windns/src/windns/recoverylogic.cpp | 9 | ||||
| -rw-r--r-- | windows/windns/src/windns/windnscontext.cpp | 7 |
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(); }); |
