From: "Erich E. Hoover" Subject: [PATCH 1/3] ws2_32: Implement SIO_ADDRESS_LIST_CHANGE with NotifyAddrChange. Message-Id: Date: Mon, 6 May 2013 19:21:35 -0600 The attached patch is the next step in the series of fixes for Silverlight/PlayReady under Wine. This particular patch does not impact Netflix, but it does impact a number of other PlayReady streaming services (and a variety of non-streaming sites as well). With this patch the SIO_ADDRESS_LIST_CHANGE call gets passed on to NotifyAddrChange, which effectively fixes a problem where Silverlight apps can loop forever calling SIO_ADDRESS_LIST_CHANGE (Bug #32328). Part 2 actually implements the NotifyAddrChange call on Linux, though this patch is sufficient to resolve the bug since the overlapped IO event no longer gets triggered. From c8e25acb68d4526493e9cbc61acff7dd20943c8e Mon Sep 17 00:00:00 2001 From: Erich Hoover Date: Mon, 6 May 2013 19:07:55 -0600 Subject: ws2_32: Implement SIO_ADDRESS_LIST_CHANGE with NotifyAddrChange. --- dlls/ws2_32/socket.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index a6a1b4c..28e7396 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3403,10 +3403,19 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID } case WS_SIO_ADDRESS_LIST_CHANGE: - FIXME("-> SIO_ADDRESS_LIST_CHANGE request: stub\n"); - /* FIXME: error and return code depend on whether socket was created - * with WSA_FLAG_OVERLAPPED, but there is no easy way to get this */ + { + BOOL is_blocking; + HANDLE handle; + + TRACE("-> SIO_ADDRESS_LIST_CHANGE request\n"); + + if (overlapped || (_is_blocking( s, &is_blocking ) && is_blocking)) + status = NotifyAddrChange(&handle, overlapped); + else + status = WSAEWOULDBLOCK; + overlapped = NULL; /* managed by NotifyAddrChange */ break; + } case WS_SIO_ADDRESS_LIST_QUERY: { -- 1.7.9.5