winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
July 2021
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
1 participants
728 discussions
Start a n
N
ew thread
Zebediah Figura : ws2_32: Move the setsockopt(IP_DROP_SOURCE_MEMBERSHIP) implementation to ntdll.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: e49e79de99c9a6b43e470f6f60ab1f71f0e6ba6e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e49e79de99c9a6b43e470f6f…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Jul 6 23:48:45 2021 -0500 ws2_32: Move the setsockopt(IP_DROP_SOURCE_MEMBERSHIP) implementation to ntdll. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 2 ++ include/wine/afd.h | 1 + 3 files changed, 6 insertions(+) diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 04917d19e92..46ed673b81e 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1739,6 +1739,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc case IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP: return do_setsockopt( handle, io, IPPROTO_IP, IP_DROP_MEMBERSHIP, in_buffer, in_size ); + case IOCTL_AFD_WINE_SET_IP_DROP_SOURCE_MEMBERSHIP: + return do_setsockopt( handle, io, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP, in_buffer, in_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 48b9fe8c594..09f04fff60f 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3641,6 +3641,8 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP, optval, optlen ); case WS_IP_DROP_SOURCE_MEMBERSHIP: + return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_DROP_SOURCE_MEMBERSHIP, optval, optlen ); + case WS_IP_UNBLOCK_SOURCE: { WS_IP_MREQ_SOURCE* val = (void*)optval; diff --git a/include/wine/afd.h b/include/wine/afd.h index c660e982d0e..93c1744c031 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -187,6 +187,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_GET_IP_DONTFRAGMENT WINE_AFD_IOC(242) #define IOCTL_AFD_WINE_SET_IP_DONTFRAGMENT WINE_AFD_IOC(243) #define IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP WINE_AFD_IOC(244) +#define IOCTL_AFD_WINE_SET_IP_DROP_SOURCE_MEMBERSHIP WINE_AFD_IOC(245) struct afd_create_params {
1
0
0
0
Zebediah Figura : ws2_32: Move the setsockopt(IP_DROP_MEMBERSHIP) implementation to ntdll.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: af3efd38ab11fdec33bf5335b61750cfd259d6a7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=af3efd38ab11fdec33bf5335…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Jul 6 23:48:44 2021 -0500 ws2_32: Move the setsockopt(IP_DROP_MEMBERSHIP) implementation to ntdll. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 4 +++- include/wine/afd.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 3f2dfe7c1f2..04917d19e92 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1736,6 +1736,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc } #endif + case IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP: + return do_setsockopt( handle, io, IPPROTO_IP, IP_DROP_MEMBERSHIP, in_buffer, in_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 10e79d3f8ff..48b9fe8c594 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3637,6 +3637,9 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, case WS_IP_DONTFRAGMENT: return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_DONTFRAGMENT, optval, optlen ); + case WS_IP_DROP_MEMBERSHIP: + return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP, optval, optlen ); + case WS_IP_DROP_SOURCE_MEMBERSHIP: case WS_IP_UNBLOCK_SOURCE: { @@ -3651,7 +3654,6 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, convert_sockopt(&level, &optname); break; } - case WS_IP_DROP_MEMBERSHIP: #ifdef IP_HDRINCL case WS_IP_HDRINCL: #endif diff --git a/include/wine/afd.h b/include/wine/afd.h index 5b4114f4d77..c660e982d0e 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -186,6 +186,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_SET_IP_BLOCK_SOURCE WINE_AFD_IOC(241) #define IOCTL_AFD_WINE_GET_IP_DONTFRAGMENT WINE_AFD_IOC(242) #define IOCTL_AFD_WINE_SET_IP_DONTFRAGMENT WINE_AFD_IOC(243) +#define IOCTL_AFD_WINE_SET_IP_DROP_MEMBERSHIP WINE_AFD_IOC(244) struct afd_create_params {
1
0
0
0
Zebediah Figura : server: Explicitly forbid connecting a listening or connected socket.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: 3b33a6b4873d2d75418c298880766f63b82d4534 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3b33a6b4873d2d75418c2988…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Tue Jul 6 23:48:43 2021 -0500 server: Explicitly forbid connecting a listening or connected socket. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=51381
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ws2_32/tests/sock.c | 10 +++++----- server/sock.c | 23 ++++++++++++++++++----- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 3e0ac405447..97b772e12d9 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -6626,14 +6626,14 @@ static void test_connect(void) WSASetLastError(0xdeadbeef); iret = connect(listener, (struct sockaddr *)&address, sizeof(address)); ok(iret == -1, "got %d\n", iret); - todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); + ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); WSASetLastError(0xdeadbeef); overlapped.Internal = 0xdeadbeef; overlapped.InternalHigh = 0xdeadbeef; iret = pConnectEx(listener, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); ok(!iret, "got %d\n", iret); - todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); + ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); @@ -6706,7 +6706,7 @@ static void test_connect(void) WSASetLastError(0xdeadbeef); iret = connect(connector, (struct sockaddr *)&address, sizeof(address)); - todo_wine ok(iret == -1, "got %d\n", iret); + ok(iret == -1, "got %d\n", iret); todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); WSASetLastError(0xdeadbeef); @@ -6740,8 +6740,8 @@ static void test_connect(void) WSASetLastError(0xdeadbeef); iret = connect(connector, (struct sockaddr *)&address, sizeof(address)); - todo_wine ok(iret == -1, "got %d\n", iret); - todo_wine ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + ok(iret == -1, "got %d\n", iret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); WSASetLastError(0xdeadbeef); iret = connect(acceptor, (struct sockaddr *)&address, sizeof(address)); diff --git a/server/sock.c b/server/sock.c index 5fdbf0bd9ba..3f0526016f9 100644 --- a/server/sock.c +++ b/server/sock.c @@ -2164,12 +2164,25 @@ static int sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) return 0; } - if (sock->state == SOCK_CONNECTING) + switch (sock->state) { - /* FIXME: STATUS_ADDRESS_ALREADY_ASSOCIATED probably isn't right, - * but there's no status code that maps to WSAEALREADY... */ - set_error( params->synchronous ? STATUS_ADDRESS_ALREADY_ASSOCIATED : STATUS_INVALID_PARAMETER ); - return 0; + case SOCK_LISTENING: + set_error( STATUS_INVALID_PARAMETER ); + return 0; + + case SOCK_CONNECTING: + /* FIXME: STATUS_ADDRESS_ALREADY_ASSOCIATED probably isn't right, + * but there's no status code that maps to WSAEALREADY... */ + set_error( params->synchronous ? STATUS_ADDRESS_ALREADY_ASSOCIATED : STATUS_INVALID_PARAMETER ); + return 0; + + case SOCK_CONNECTED: + set_error( STATUS_CONNECTION_ACTIVE ); + return 0; + + case SOCK_UNCONNECTED: + case SOCK_CONNECTIONLESS: + break; } unix_len = sockaddr_to_unix( addr, params->addr_len, &unix_addr );
1
0
0
0
Zebediah Figura : ws2_32/tests: Add more tests for invalid calls to connect() and ConnectEx().
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: 34e3301b190e17bedb0a6adc7541865e5d721470 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=34e3301b190e17bedb0a6adc…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Tue Jul 6 23:48:42 2021 -0500 ws2_32/tests: Add more tests for invalid calls to connect() and ConnectEx(). Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ws2_32/tests/sock.c | 95 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 85 insertions(+), 10 deletions(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 75e83927007..3e0ac405447 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -6576,7 +6576,7 @@ static void test_WSAPoll(void) closesocket(server); } -static void test_ConnectEx(void) +static void test_connect(void) { SOCKET listener = INVALID_SOCKET; SOCKET acceptor = INVALID_SOCKET; @@ -6610,6 +6610,9 @@ static void test_ConnectEx(void) iret = getsockname(listener, (struct sockaddr*)&address, &addrlen); ok(!iret, "failed to get address, error %u\n", WSAGetLastError()); + iret = listen(listener, 1); + ok(!iret, "failed to listen, error %u\n", WSAGetLastError()); + iret = set_blocking(listener, TRUE); ok(!iret, "failed to set nonblocking, error %u\n", WSAGetLastError()); @@ -6620,6 +6623,20 @@ static void test_ConnectEx(void) ok(bytesReturned == sizeof(pConnectEx), "expected sizeof(pConnectEx), got %u\n", bytesReturned); + WSASetLastError(0xdeadbeef); + iret = connect(listener, (struct sockaddr *)&address, sizeof(address)); + ok(iret == -1, "got %d\n", iret); + todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); + + WSASetLastError(0xdeadbeef); + overlapped.Internal = 0xdeadbeef; + overlapped.InternalHigh = 0xdeadbeef; + iret = pConnectEx(listener, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); + ok(!iret, "got %d\n", iret); + todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); + ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); + todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); + bret = pConnectEx(INVALID_SOCKET, (struct sockaddr*)&address, addrlen, NULL, 0, &bytesReturned, &overlapped); ok(bret == FALSE && WSAGetLastError() == WSAENOTSOCK, "ConnectEx on invalid socket " "returned %d + errno %d\n", bret, WSAGetLastError()); @@ -6641,9 +6658,6 @@ static void test_ConnectEx(void) overlapped.hEvent = CreateEventA(NULL, FALSE, FALSE, NULL); - iret = listen(listener, 1); - ok(!iret, "failed to listen, error %u\n", WSAGetLastError()); - bret = pConnectEx(connector, (struct sockaddr*)&address, addrlen, NULL, 0, &bytesReturned, &overlapped); ok(bret == FALSE && WSAGetLastError() == ERROR_IO_PENDING, "ConnectEx failed: " "returned %d + errno %d\n", bret, WSAGetLastError()); @@ -6690,7 +6704,73 @@ static void test_ConnectEx(void) ok(buffer[0] == '1' && buffer[1] == '2' && buffer[2] == '3', "Failed to get the right data, expected '123', got '%s'\n", buffer); + WSASetLastError(0xdeadbeef); + iret = connect(connector, (struct sockaddr *)&address, sizeof(address)); + todo_wine ok(iret == -1, "got %d\n", iret); + todo_wine ok(WSAGetLastError() == WSAEINVAL, "got error %u\n", WSAGetLastError()); + + WSASetLastError(0xdeadbeef); + iret = connect(acceptor, (struct sockaddr *)&address, sizeof(address)); + ok(iret == -1, "got %d\n", iret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + + WSASetLastError(0xdeadbeef); + overlapped.Internal = 0xdeadbeef; + overlapped.InternalHigh = 0xdeadbeef; + bret = pConnectEx(connector, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); + ok(!bret, "got %d\n", bret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); + todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); + + WSASetLastError(0xdeadbeef); + overlapped.Internal = 0xdeadbeef; + overlapped.InternalHigh = 0xdeadbeef; + bret = pConnectEx(acceptor, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); + ok(!bret, "got %d\n", bret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); + todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); + + closesocket(connector); + closesocket(acceptor); + closesocket(listener); + + tcp_socketpair(&connector, &acceptor); + + WSASetLastError(0xdeadbeef); + iret = connect(connector, (struct sockaddr *)&address, sizeof(address)); + todo_wine ok(iret == -1, "got %d\n", iret); + todo_wine ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + + WSASetLastError(0xdeadbeef); + iret = connect(acceptor, (struct sockaddr *)&address, sizeof(address)); + ok(iret == -1, "got %d\n", iret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + + WSASetLastError(0xdeadbeef); + overlapped.Internal = 0xdeadbeef; + overlapped.InternalHigh = 0xdeadbeef; + bret = pConnectEx(connector, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); + ok(!bret, "got %d\n", bret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); + todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); + + WSASetLastError(0xdeadbeef); + overlapped.Internal = 0xdeadbeef; + overlapped.InternalHigh = 0xdeadbeef; + bret = pConnectEx(acceptor, (struct sockaddr *)&address, sizeof(address), NULL, 0, &bytesReturned, &overlapped); + ok(!bret, "got %d\n", bret); + ok(WSAGetLastError() == WSAEISCONN, "got error %u\n", WSAGetLastError()); + ok(overlapped.Internal == STATUS_PENDING, "got status %#x\n", (NTSTATUS)overlapped.Internal); + todo_wine ok(overlapped.InternalHigh == 0xdeadbeef, "got size %Iu\n", overlapped.InternalHigh); + closesocket(connector); + closesocket(acceptor); + + /* Connect with error */ + connector = socket(AF_INET, SOCK_STREAM, 0); ok(connector != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError()); /* ConnectEx needs a bound socket */ @@ -6700,11 +6780,6 @@ static void test_ConnectEx(void) iret = bind(connector, (struct sockaddr*)&conaddress, sizeof(conaddress)); ok(!iret, "failed to bind, error %u\n", WSAGetLastError()); - closesocket(acceptor); - closesocket(listener); - - /* Connect with error */ - address.sin_port = htons(1); bret = pConnectEx(connector, (struct sockaddr*)&address, addrlen, NULL, 0, &bytesReturned, &overlapped); @@ -11264,7 +11339,7 @@ START_TEST( sock ) test_ipv6only(); test_TransmitFile(); test_AcceptEx(); - test_ConnectEx(); + test_connect(); test_shutdown(); test_DisconnectEx();
1
0
0
0
Zebediah Figura : server: Clear the connection error after a successful connection.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: ddb922391512f4d596b604017b329536285e65a5 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ddb922391512f4d596b60401…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Tue Jul 6 23:48:41 2021 -0500 server: Clear the connection error after a successful connection. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ws2_32/tests/sock.c | 2 +- server/sock.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 9e7cd3a1d39..75e83927007 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -3344,7 +3344,7 @@ static void test_select(void) id = 0xdeadbeef; ret = getsockopt(fdWrite, SOL_SOCKET, SO_ERROR, (char *)&id, &len); ok(!ret, "getsockopt failed with %d\n", WSAGetLastError()); - todo_wine ok(!id, "got error %u\n", id); + ok(!id, "got error %u\n", id); closesocket(fdWrite); diff --git a/server/sock.c b/server/sock.c index 58e9cf4302a..5fdbf0bd9ba 100644 --- a/server/sock.c +++ b/server/sock.c @@ -983,7 +983,10 @@ static void sock_dispatch_events( struct sock *sock, enum connection_state prevs case SOCK_CONNECTING: if (event & POLLOUT) + { post_socket_event( sock, AFD_POLL_BIT_CONNECT, 0 ); + sock->errors[AFD_POLL_BIT_CONNECT_ERR] = 0; + } if (event & (POLLERR | POLLHUP)) post_socket_event( sock, AFD_POLL_BIT_CONNECT_ERR, error ); break;
1
0
0
0
Esme Povirk : rundll32: Only call LoadLibrary16 on x86.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: wine Branch: master Commit: 53ec99daeb0551fb2f7dd48c03c63951b8ff6824 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=53ec99daeb0551fb2f7dd48c…
Author: Esme Povirk <esme(a)codeweavers.com> Date: Tue Jul 6 16:31:47 2021 -0500 rundll32: Only call LoadLibrary16 on x86. These are imported by ordinal, so on other architectures we end up calling whatever ends up on that ordinal, which is currently Beep on x86_64. Signed-off-by: Esme Povirk <esme(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/rundll32/rundll32.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/programs/rundll32/rundll32.c b/programs/rundll32/rundll32.c index eb7713518a9..fe9d17f0f48 100644 --- a/programs/rundll32/rundll32.c +++ b/programs/rundll32/rundll32.c @@ -83,8 +83,6 @@ static void call_entry_point( void *func, HWND hwnd, HINSTANCE inst, void *cmdli } #endif -static HINSTANCE16 (WINAPI *pLoadLibrary16)(LPCSTR libname); -static FARPROC16 (WINAPI *pGetProcAddress16)(HMODULE16 hModule, LPCSTR name); static void (WINAPI *pRunDLL_CallEntry16)( FARPROC proc, HWND hwnd, HINSTANCE inst, LPCSTR cmdline, INT cmdshow ); @@ -112,8 +110,11 @@ static ATOM register_class(void) return RegisterClassExW(&wcex); } +#ifdef __i386__ + static HINSTANCE16 load_dll16( LPCWSTR dll ) { + HINSTANCE16 (WINAPI *pLoadLibrary16)(LPCSTR libname); HINSTANCE16 ret = 0; DWORD len = WideCharToMultiByte( CP_ACP, 0, dll, -1, NULL, 0, NULL, NULL ); char *dllA = HeapAlloc( GetProcessHeap(), 0, len ); @@ -130,6 +131,7 @@ static HINSTANCE16 load_dll16( LPCWSTR dll ) static FARPROC16 get_entry_point16( HINSTANCE16 inst, LPCWSTR entry ) { + FARPROC16 (WINAPI *pGetProcAddress16)(HMODULE16 hModule, LPCSTR name); FARPROC16 ret = 0; DWORD len = WideCharToMultiByte( CP_ACP, 0, entry, -1, NULL, 0, NULL, NULL ); char *entryA = HeapAlloc( GetProcessHeap(), 0, len ); @@ -143,6 +145,7 @@ static FARPROC16 get_entry_point16( HINSTANCE16 inst, LPCWSTR entry ) } return ret; } +#endif static void *get_entry_point32( HMODULE module, LPCWSTR entry, BOOL *unicode ) { @@ -272,8 +275,8 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine { HWND hWnd; LPWSTR szDllName,szEntryPoint; - void *entry_point; - BOOL unicode = FALSE, win16; + void *entry_point = NULL; + BOOL unicode = FALSE, win16 = FALSE; STARTUPINFOW info; HMODULE hDll; @@ -300,11 +303,8 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine /* Load the library */ hDll=LoadLibraryW(szDllName); - if (hDll) - { - win16 = FALSE; - entry_point = get_entry_point32( hDll, szEntryPoint, &unicode ); - } + if (hDll) entry_point = get_entry_point32( hDll, szEntryPoint, &unicode ); +#ifdef __i386__ else { HINSTANCE16 dll = load_dll16( szDllName ); @@ -315,9 +315,9 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE hOldInstance, LPWSTR szCmdLine goto CLEANUP; } win16 = TRUE; - unicode = FALSE; entry_point = get_entry_point16( dll, szEntryPoint ); } +#endif if (!entry_point) {
1
0
0
0
Henri Verbeet : tests: Add shader tests for dynamically indexed unbounded resource arrays.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: vkd3d Branch: master Commit: cd233fe018f1936eb03c6b1902ff59422771f0fe URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=cd233fe018f1936eb03c6b1…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Jul 7 11:20:14 2021 +1000 tests: Add shader tests for dynamically indexed unbounded resource arrays. Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Conor McCarthy <cmccarthy(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tests/d3d12.c | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 198 insertions(+), 1 deletion(-) Diff:
https://source.winehq.org/git/vkd3d.git/?a=commitdiff;h=cd233fe018f1936eb03…
1
0
0
0
Zhenbo Li : Announcement for OSPP Summer 2021.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: website Branch: master Commit: af4df5499835af9b841f7b1c23bd723cc6266e73 URL:
https://source.winehq.org/git/website.git/?a=commit;h=af4df5499835af9b841f7…
Author: Zhenbo Li <litimetal(a)gmail.com> Date: Fri Jul 2 17:07:56 2021 +0800 Announcement for OSPP Summer 2021. Signed-off-by: Zhenbo Li <litimetal(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- news/en/2021070301.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/news/en/2021070301.xml b/news/en/2021070301.xml new file mode 100644 index 00000000..5f2b0eb9 --- /dev/null +++ b/news/en/2021070301.xml @@ -0,0 +1,13 @@ +<news> +<date>July 3, 2021</date> +<title>OSPP Summer 2021</title> +<body> +<p> This year, we have three students participating in OSPP Summer 2021. Welcome!</p> +<!--MAINLINKS--><ul> +<li><a href="
https://summer.iscas.ac.cn/#/org/prodetail/210900805?lang=en
">Florian Eder: Implement robocopy.exe</a></li> +<li><a href="
https://summer.iscas.ac.cn/#/org/prodetail/210900808?lang=en
">Atharva Nimbalkar: Port wined3d's GLSL generator to vkd3d-shader</a></li> +<li><a href="
https://summer.iscas.ac.cn/#/org/prodetail/210900814?lang=en
">Qingyi Wang: Documentation improvements for vkd3d-shaders</a></li> +</ul><!--ENDMAINLINKS--> +Enjoy Wine coding this summer! :) +</body> +</news>
1
0
0
0
Francois Gouget : winetest: Identify and highlight tests with too much output.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: tools Branch: master Commit: d263eac1c8f55032b6ea996da37320bff9941182 URL:
https://source.winehq.org/git/tools.git/?a=commit;h=d263eac1c8f55032b6ea996…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Mon Jul 5 18:18:44 2021 +0200 winetest: Identify and highlight tests with too much output. Regular failures are more important so only highlight this problem if the test has no other issue. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=51352
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- winetest/build-patterns | 1 + winetest/dissect | 9 +++++++-- winetest/gather | 12 ++++++++++-- winetest/report.css | 3 +++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/winetest/build-patterns b/winetest/build-patterns index b8ad628..d530ad2 100755 --- a/winetest/build-patterns +++ b/winetest/build-patterns @@ -935,6 +935,7 @@ my %status2html = ( "skipped" => ["-", "s", "skipped by user request", "", ""], "crash" => ["C", "C", "crash", "t", ""], "258" => ["T", "T", "timeout", "t", ""], + "big" => ["B", "B", "too much output", "t", ""], ); # Returns a tuple containing the symbol, CSS class, title, link type and diff --git a/winetest/dissect b/winetest/dissect index cf265d2..55d0a72 100755 --- a/winetest/dissect +++ b/winetest/dissect @@ -267,7 +267,7 @@ open IN, "<:raw", $report or mydie "could not open '$report' for reading: $!"; # - <dll> - skipped - - - - # - <dll> <unit> skipped - - - <source> # - <dll> <unit> failed (258|crash) - - <source> -# - <dll> <unit> <total> <todo> <failures> <skipped> <source> +# - <dll> <unit> <total> <todo> (<failures>|big) <skipped> <source> open SUM, ">$tmpdir/summary.txt" or mydie "could not open '$tmpdir/summary.txt' for writing: $!"; my $line = <IN> || ""; @@ -599,10 +599,12 @@ sub close_test_unit($) $todo ||= $s_todo; $skipped ||= $s_skipped; + my $toobig; if ($unitsize > $maxunitsize) { add_test_line("end", "The test prints too much data ($unitsize bytes)"); $extra_failures++; + $toobig = 1; } if (!$broken and defined $rc) { @@ -637,7 +639,10 @@ sub close_test_unit($) } $failures += $extra_failures; - $summary = "$s_total $todo $failures $skipped" if (!defined $summary); + if (!defined $summary) + { + $summary = "$s_total $todo " . (($toobig and $failures == 1) ? "big" : $failures) . " $skipped"; + } print SUM "- $dll $unit $summary $source\n"; $testbox->{pattern} = "$dll:$unit" if ($failures); if ($failures && ++$failed_units > $maxfailedtests) { diff --git a/winetest/gather b/winetest/gather index 755af18..5aabe4e 100755 --- a/winetest/gather +++ b/winetest/gather @@ -356,7 +356,12 @@ foreach my $file (glob "$builddir/*/summary.txt") { skips => [ 1, 1 ] }; } else { - $report->{$testname} = { status => "run", + my $status = "run"; + if ($errors eq "big") { + $status = "big"; + $errors = 1; + } + $report->{$testname} = { status => $status, count => [ $count, $count ], errors => [ $errors, $errors ], todos => [ $todos, $todos ], @@ -409,7 +414,8 @@ sub merge_status($$) } elsif ($group_result->{status} eq "run" and $result->{status} =~ /^missing/) { ; # Nothing to do - } elsif ($group_result->{status} ne $result->{status}) { + } elsif (($group_result->{status} =~ /^(?:run|big)$/) ne + ($result->{status} =~ /^(?:run|big)$/)) { $group_result->{status} = "mixed"; } @@ -640,6 +646,7 @@ sub get_result_title($$) if ($result->{status} eq "mixed") { return "Mixed results"; } if ($result->{status} eq "crash") { return "Test crashed"; } if ($result->{status} eq "258") { return "Test timed out"; } + if ($result->{status} eq "big") { return "Too much output"; } if ($result->{status} eq "skipped") { return "Skipped by user request"; } my ($dll, $unit) = split(/:/, $testname); @@ -731,6 +738,7 @@ sub singletest($$$) { skipped => "skipped", native => "native", crash => "crashed", + big => "too big", 258 => "timeout", mixed => "mixed", ); diff --git a/winetest/report.css b/winetest/report.css index b8b67b9..4594c5d 100644 --- a/winetest/report.css +++ b/winetest/report.css @@ -92,6 +92,9 @@ div.pattern :hover { color: black; text-decoration: underline; } background-color: #ff5555; } /* .patF failure(s) */ +.patB { /* too much output */ + background-color: #ffffb3; +} /* .patn not run for an unknown reason */ /* .patm missing dll */ .pate { /* missing entrypoint */
1
0
0
0
Francois Gouget : winetest: Detect and report tests blocked by anti-virus tools.
by Alexandre Julliard
07 Jul '21
07 Jul '21
Module: tools Branch: master Commit: 5816ad63defc099feffd5d40cc3e52f672221d41 URL:
https://source.winehq.org/git/tools.git/?a=commit;h=5816ad63defc099feffd5d4…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Mon Jul 5 18:18:27 2021 +0200 winetest: Detect and report tests blocked by anti-virus tools. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- winetest/build-patterns | 1 + winetest/dissect | 5 +++++ winetest/gather | 10 ++++++++-- winetest/report.css | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/winetest/build-patterns b/winetest/build-patterns index da7272e..b8ad628 100755 --- a/winetest/build-patterns +++ b/winetest/build-patterns @@ -929,6 +929,7 @@ my %status2html = ( "missingsxs" => ["v", "v", "missing side-by-side dll version", "version", ""], "stub" => ["u", "u", "stub Windows dll", "version", ""], "native" => ["N", "N", "native Windows dll", "version", ""], + "loaderror225" => ["V", "V", "blocked by the anti-virus", "version", ""], "loaderror258" => ["I", "I", "timed out while getting the test list", "version", ""], # Other status values "skipped" => ["-", "s", "skipped by user request", "", ""], diff --git a/winetest/dissect b/winetest/dissect index 33cfb0a..cf265d2 100755 --- a/winetest/dissect +++ b/winetest/dissect @@ -932,6 +932,11 @@ foreach my $dll (sort keys %dllinfo) $box->{data} .= sprintf "<td>%s</td><td class=\"failed\">timed out getting the test list</td></tr>\n", escapeHTML($dll); } + elsif ($dllinfo{$dll}->{version} eq "load error 225") + { + $box->{data} .= sprintf "<td>%s</td><td class=\"failed\">test blocked by the anti-virus</td></tr>\n", + escapeHTML($dll); + } elsif ($dllinfo{$dll}->{version} =~ /^load error (\d+)$/) { # Flag unknown errors diff --git a/winetest/gather b/winetest/gather index abb3395..755af18 100755 --- a/winetest/gather +++ b/winetest/gather @@ -656,8 +656,10 @@ sub get_result_title($$) if ($result->{status} =~ /^loaderror(.*)$/) { my $code = $1; - return "Not run because getting the test list ". - ($code eq "258" ? "timed out" : "failed with error $code"); + return $code eq "225" ? + "Not run because the test was blocked by the anti-virus" : + ("Not run because getting the test list ". + ($code eq "258" ? "timed out" : "failed with error $code")); } if ($result->{status} eq "native") { return "Not run because $dll is a native Windows dll (not allowed for Wine tests)"; } if ($result->{status} eq "stub") { return "Not run because $dll is a stub Windows dll"; } @@ -709,6 +711,10 @@ sub singletest($$$) { !$result->{errors}->[1] ? $result->{todos}->[1] : "$result->{errors}->[1]+$result->{todos}->[1]"; } + elsif ($status eq "loaderror225") + { + $msg = "virus"; + } elsif ($status =~ /^loaderror/) { $msg = "no list"; diff --git a/winetest/report.css b/winetest/report.css index b558c6f..b8b67b9 100644 --- a/winetest/report.css +++ b/winetest/report.css @@ -113,6 +113,9 @@ div.pattern :hover { color: black; text-decoration: underline; } .patL { /* error while getting the test list */ background-color: #80aaff; } +.patV { /* test blocked by the anti-virus */ + background-color: #99e6ff; +} .commitR { color: #cc0000;
1
0
0
0
← Newer
1
...
49
50
51
52
53
54
55
...
73
Older →
Jump to page:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Results per page:
10
25
50
100
200