mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 07:05:08 +00:00
winhttp/tests: Avoid race condition on closing connection in server_thread().
The connection may be cached and checked for availability for request before the server thread closes it.
This commit is contained in:
parent
645a65cbcf
commit
f75a8b3555
|
@ -1401,7 +1401,7 @@ struct server_info
|
|||
};
|
||||
|
||||
static int server_socket;
|
||||
static HANDLE server_socket_available, server_socket_done;
|
||||
static HANDLE server_socket_available, server_socket_closed, server_socket_done;
|
||||
|
||||
static DWORD CALLBACK server_thread(LPVOID param)
|
||||
{
|
||||
|
@ -1436,7 +1436,7 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|||
do
|
||||
{
|
||||
if (c == -1) c = accept(s, NULL, NULL);
|
||||
|
||||
ResetEvent(server_socket_closed);
|
||||
memset(buffer, 0, sizeof buffer);
|
||||
for(i = 0; i < sizeof buffer - 1; i++)
|
||||
{
|
||||
|
@ -1463,6 +1463,7 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|||
}
|
||||
shutdown(c, 2);
|
||||
closesocket(c);
|
||||
SetEvent(server_socket_closed);
|
||||
c = -1;
|
||||
} while (!last_request);
|
||||
|
||||
|
@ -1749,6 +1750,7 @@ static void test_persistent_connection(int port)
|
|||
|
||||
SetEvent( server_socket_done );
|
||||
CloseHandle( info.wait );
|
||||
WaitForSingleObject( server_socket_closed, INFINITE );
|
||||
}
|
||||
|
||||
struct test_recursion_context
|
||||
|
@ -1929,6 +1931,7 @@ START_TEST (notification)
|
|||
ok( thread != NULL, "failed to create thread %lu\n", GetLastError() );
|
||||
|
||||
server_socket_available = CreateEventW( NULL, 0, 0, NULL );
|
||||
server_socket_closed = CreateEventW( NULL, 0, 0, NULL );
|
||||
server_socket_done = CreateEventW( NULL, 0, 0, NULL );
|
||||
|
||||
ret = WaitForSingleObject( si.event, 10000 );
|
||||
|
@ -1948,4 +1951,5 @@ START_TEST (notification)
|
|||
CloseHandle( thread );
|
||||
CloseHandle( server_socket_available );
|
||||
CloseHandle( server_socket_done );
|
||||
CloseHandle( server_socket_closed );
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue