summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2019-11-25 22:31:23 +0100
committerOdd Stranne <odd@mullvad.net>2019-11-26 13:31:19 +0100
commit7419895ed54acd58d068699f1974bc383ff6e8f5 (patch)
treeb14269f28e728a714aea22fc884ce931144b7e6a
parent4d43f1b7db42802b3e88dd987e5b876fc9574f0b (diff)
downloadmullvadvpn-7419895ed54acd58d068699f1974bc383ff6e8f5.tar.xz
mullvadvpn-7419895ed54acd58d068699f1974bc383ff6e8f5.zip
Adjust IsConnectedAdapter()
-rw-r--r--windows/winnet/src/winnet/offlinemonitor.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/windows/winnet/src/winnet/offlinemonitor.cpp b/windows/winnet/src/winnet/offlinemonitor.cpp
index 4f93a01def..3e223de0e7 100644
--- a/windows/winnet/src/winnet/offlinemonitor.cpp
+++ b/windows/winnet/src/winnet/offlinemonitor.cpp
@@ -24,23 +24,39 @@ bool IsConnectedAdapter(const MIB_IF_ROW2 &iface)
//
// (Windows 10, and possibly others.)
+ //
// The BT adapter is erronously not marked as representing hardware.
// By filtering on this we currently do not support BT tethering.
//
+ // Specifically, the following settings are problematic:
+ //
+ // InterfaceAndOperStatusFlags.HardwareInterface: 0
+ // InterfaceAndOperStatusFlags.ConnectorPresent: 0
+ //
if (FALSE == iface.InterfaceAndOperStatusFlags.HardwareInterface
- || FALSE != iface.InterfaceAndOperStatusFlags.FilterInterface
+ && FALSE == iface.InterfaceAndOperStatusFlags.ConnectorPresent)
+ {
+ return false;
+ }
+
+ //
+ // Maybe checking iface.InterfaceAndOperStatusFlags.NotMediaConnected here
+ // would be a good thing?
+ //
+
+ if (FALSE != iface.InterfaceAndOperStatusFlags.FilterInterface
|| 0 == iface.PhysicalAddressLength
|| FALSE != iface.InterfaceAndOperStatusFlags.EndPointInterface)
{
return false;
}
- bool connected = (
+ return
+ (
IfOperStatusUp == iface.OperStatus
&& MediaConnectStateConnected == iface.MediaConnectState
);
- return connected;
}
} // anonymous namespace