blob: 0954add5dbeba3f4b4a91ead41003cfcb782dd57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
From fab226c5cf4d1ae1306d6d48d684e9bb231a3cc7 Mon Sep 17 00:00:00 2001
From: Nirbheek Chauhan <nirbheek@centricular.com>
Date: Thu, 9 Jul 2020 16:43:45 +0530
Subject: [PATCH 2/4] interfaces: Port to GetBestInterfaceEx for UWP compat
Still prefer ipv4 addresses for backwards-compat. GetBestInterface is
not allowed when targeting UWP, so use GetBestInterfaceEx.
Also add some debug logging to ensure that the function is actually
running correctly.
---
agent/interfaces.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/agent/interfaces.c b/agent/interfaces.c
index 5c8d131..309ca65 100644
--- a/agent/interfaces.c
+++ b/agent/interfaces.c
@@ -600,8 +600,21 @@ GList * nice_interfaces_get_local_ips (gboolean include_loopback)
* Get the best interface for transport to 0.0.0.0.
* This interface should be first in list!
*/
- if (GetBestInterface (0, &pref) != NO_ERROR)
- pref = 0;
+ {
+ DWORD retcode;
+ struct sockaddr_in sa_any = {0};
+
+ sa_any.sin_family = AF_INET;
+ sa_any.sin_addr.s_addr = htonl (INADDR_ANY);
+
+ retcode = GetBestInterfaceEx ((SOCKADDR *) &sa_any, &pref);
+ if (retcode != NO_ERROR) {
+ gchar *msg = g_win32_error_message (retcode);
+ nice_debug ("Error fetching best interface: %s", msg);
+ g_free (msg);
+ pref = 0;
+ }
+ }
/* Loop over the adapters. */
for (a = addresses; a != NULL; a = a->Next) {
--
2.27.0.windows.1
|