October 18, 2019 9:28 AM, "Fabian Maurer" dark.shadow4@web.de wrote:
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index aa0a164ff9..22a07ce893 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -6011,6 +6016,23 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, case WS_IPPROTO_IP: switch(optname) {
case WS_IP_ADD_SOURCE_MEMBERSHIP:case WS_IP_DROP_SOURCE_MEMBERSHIP:case WS_IP_BLOCK_SOURCE:case WS_IP_UNBLOCK_SOURCE:{/* ip_mreq_source is different on Windows (switched source/interface)m so we need to make a copy */
Only on Linux. BSD has it in the same order as Windows.
WS_IP_MREQ_SOURCE* val = (void*)optval;mreq_source.imr_interface.s_addr = val->imr_interface.S_un.S_addr;mreq_source.imr_multiaddr.s_addr = val->imr_multiaddr.S_un.S_addr;mreq_source.imr_sourceaddr.s_addr = val->imr_sourceaddr.S_un.S_addr;optval = (char*)&mreq_source;optlen = sizeof(mreq_source);convert_sockopt(&level, &optname);break;} case WS_IP_ADD_MEMBERSHIP: case WS_IP_DROP_MEMBERSHIP:#ifdef IP_HDRINCL
Chip