From 974163bc187ed7dfd0e6054491d967a5acb047db Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 7 Mar 2022 12:51:40 +0100 Subject: Cygwin: wincap: drop has_gaa_largeaddress_bug flag and related code Signed-off-by: Corinna Vinschen --- winsup/cygwin/net.cc | 55 +++++++++------------------------------------------- 1 file changed, 9 insertions(+), 46 deletions(-) (limited to 'winsup/cygwin/net.cc') diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 2209f4bde..36e2923b4 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -1440,26 +1440,20 @@ cygwin_send (int fd, const void *buf, size_t len, int flags) /* Fill out an ifconf struct. */ -struct gaa_wa { - ULONG family; - PIP_ADAPTER_ADDRESSES *pa_ret; -}; - -DWORD WINAPI -call_gaa (LPVOID param) +bool +get_adapters_addresses (PIP_ADAPTER_ADDRESSES *pa_ret, ULONG family) { DWORD ret, size = 0; - gaa_wa *p = (gaa_wa *) param; PIP_ADAPTER_ADDRESSES pa0 = NULL; - if (!p->pa_ret) - return GetAdaptersAddresses (p->family, GAA_FLAG_INCLUDE_PREFIX - | GAA_FLAG_INCLUDE_ALL_INTERFACES, + if (!pa_ret) + return GetAdaptersAddresses (family, GAA_FLAG_INCLUDE_PREFIX + | GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, NULL, &size); do { - ret = GetAdaptersAddresses (p->family, GAA_FLAG_INCLUDE_PREFIX - | GAA_FLAG_INCLUDE_ALL_INTERFACES, + ret = GetAdaptersAddresses (family, GAA_FLAG_INCLUDE_PREFIX + | GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, pa0, &size); if (ret == ERROR_BUFFER_OVERFLOW && !(pa0 = (PIP_ADAPTER_ADDRESSES) realloc (pa0, size))) @@ -1471,42 +1465,11 @@ call_gaa (LPVOID param) if (ret != ERROR_SUCCESS) { free (pa0); - *p->pa_ret = NULL; + *pa_ret = NULL; } else - *p->pa_ret = pa0; + *pa_ret = pa0; } - return ret; -} - -bool -get_adapters_addresses (PIP_ADAPTER_ADDRESSES *pa_ret, ULONG family) -{ - DWORD ret; - gaa_wa param = { family, pa_ret }; - - if (wincap.has_gaa_largeaddress_bug () - && (uintptr_t) ¶m >= (uintptr_t) 0x80000000L) - { - /* In Windows 7 under WOW64, GetAdaptersAddresses fails if it's running - in a thread with a stack located in the large address area. If we're - running in a pthread with such a stack, we call GetAdaptersAddresses - in a child thread with an OS-allocated stack. The OS allocates stacks - bottom up, so chances are good that the new stack will be located in - the lower address area. */ - HANDLE thr = CreateThread (NULL, 0, call_gaa, ¶m, 0, NULL); - SetThreadName (GetThreadId (thr), "__call_gaa"); - if (!thr) - { - debug_printf ("CreateThread: %E"); - return false; - } - WaitForSingleObject (thr, INFINITE); - GetExitCodeThread (thr, &ret); - CloseHandle (thr); - } - else - ret = call_gaa (¶m); return ret == ERROR_SUCCESS || (!pa_ret && ret == ERROR_BUFFER_OVERFLOW); } -- cgit v1.2.3