summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-03-15 15:57:40 +0100
committerDavid Lönnhager <david.l@mullvad.net>2022-03-15 15:57:40 +0100
commit5492fab7aaaf0bccff0a4019183db33160ed6d0d (patch)
tree3ddc17fd5f962663f2b2dea587668f381898b9a8
parent787311702ceca9dce7fdc553afcb4b63c9c3a8ca (diff)
parent39533167d717ee74264327ef2987516f54674118 (diff)
downloadmullvadvpn-5492fab7aaaf0bccff0a4019183db33160ed6d0d.tar.xz
mullvadvpn-5492fab7aaaf0bccff0a4019183db33160ed6d0d.zip
Merge branch 'win-fix-route-race'
-rw-r--r--windows/winnet/src/winnet/routing/defaultroutemonitor.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/windows/winnet/src/winnet/routing/defaultroutemonitor.cpp b/windows/winnet/src/winnet/routing/defaultroutemonitor.cpp
index 9b063de850..523c2d7ba0 100644
--- a/windows/winnet/src/winnet/routing/defaultroutemonitor.cpp
+++ b/windows/winnet/src/winnet/routing/defaultroutemonitor.cpp
@@ -29,13 +29,7 @@ DefaultRouteMonitor::DefaultRouteMonitor
TWO_SECOND_INTERFERENCE
))
{
- try
- {
- m_bestRoute = GetBestDefaultRoute(m_family);
- }
- catch (...)
- {
- }
+ std::scoped_lock<std::mutex> lock(m_evaluationLock);
auto status = NotifyRouteChange2(AF_UNSPEC, RouteChangeCallback, this, FALSE, &m_routeNotificationHandle);
@@ -52,6 +46,14 @@ DefaultRouteMonitor::DefaultRouteMonitor
CancelMibChangeNotify2(m_routeNotificationHandle);
THROW_WINDOWS_ERROR(status, "Register for network interface change notifications");
}
+
+ try
+ {
+ m_bestRoute = GetBestDefaultRoute(m_family);
+ }
+ catch (...)
+ {
+ }
}
DefaultRouteMonitor::~DefaultRouteMonitor()