mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 15:30:49 +00:00
winhttp: Don't send notifications when connection is closed on read finish.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com> Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
228c3bdfec
commit
d349013dde
|
@ -1797,13 +1797,11 @@ static void finished_reading( struct request *request )
|
||||||
if (!wcsicmp( connection, L"close" )) close = TRUE;
|
if (!wcsicmp( connection, L"close" )) close = TRUE;
|
||||||
}
|
}
|
||||||
else if (!wcscmp( request->version, L"HTTP/1.0" )) close = TRUE;
|
else if (!wcscmp( request->version, L"HTTP/1.0" )) close = TRUE;
|
||||||
if (close)
|
|
||||||
{
|
|
||||||
close_connection( request );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
cache_connection( request->netconn );
|
if (close)
|
||||||
|
netconn_close( request->netconn );
|
||||||
|
else
|
||||||
|
cache_connection( request->netconn );
|
||||||
request->netconn = NULL;
|
request->netconn = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1124,32 +1124,15 @@ static const struct notification read_test[] =
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_READ_COMPLETE, NF_SIGNAL }
|
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_READ_COMPLETE, NF_SIGNAL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct notification read_allow_close_test[] =
|
#define read_request_data(a,b,c) _read_request_data(a,b,c,__LINE__)
|
||||||
{
|
static void _read_request_data(struct test_request *req, struct info *info, const char *expected_data, unsigned line)
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NF_ALLOW },
|
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, NF_ALLOW },
|
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, NF_ALLOW },
|
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, NF_ALLOW },
|
|
||||||
{ winhttp_read_data, WINHTTP_CALLBACK_STATUS_READ_COMPLETE, NF_SIGNAL }
|
|
||||||
};
|
|
||||||
|
|
||||||
#define read_request_data(a,b,c,d) _read_request_data(a,b,c,d,__LINE__)
|
|
||||||
static void _read_request_data(struct test_request *req, struct info *info, const char *expected_data, BOOL closing_connection, unsigned line)
|
|
||||||
{
|
{
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
DWORD len;
|
DWORD len;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
if (closing_connection)
|
info->test = read_test;
|
||||||
{
|
info->count = ARRAY_SIZE( read_test );
|
||||||
info->test = read_allow_close_test;
|
|
||||||
info->count = ARRAY_SIZE( read_allow_close_test );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
info->test = read_test;
|
|
||||||
info->count = ARRAY_SIZE( read_test );
|
|
||||||
}
|
|
||||||
info->index = 0;
|
info->index = 0;
|
||||||
|
|
||||||
setup_test( info, winhttp_read_data, line );
|
setup_test( info, winhttp_read_data, line );
|
||||||
|
@ -1180,7 +1163,7 @@ static void test_persistent_connection(int port)
|
||||||
"Content-Length: 1\r\n"
|
"Content-Length: 1\r\n"
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"X" );
|
"X" );
|
||||||
read_request_data( &req, &info, "X", FALSE );
|
read_request_data( &req, &info, "X" );
|
||||||
close_request( &req, &info, FALSE );
|
close_request( &req, &info, FALSE );
|
||||||
|
|
||||||
/* chunked connection test */
|
/* chunked connection test */
|
||||||
|
@ -1194,7 +1177,7 @@ static void test_persistent_connection(int port)
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"9\r\n123456789\r\n"
|
"9\r\n123456789\r\n"
|
||||||
"0\r\n\r\n" );
|
"0\r\n\r\n" );
|
||||||
read_request_data( &req, &info, "123456789", FALSE );
|
read_request_data( &req, &info, "123456789" );
|
||||||
close_request( &req, &info, FALSE );
|
close_request( &req, &info, FALSE );
|
||||||
|
|
||||||
/* HTTP/1.1 connections are persistent by default, no additional header is needed */
|
/* HTTP/1.1 connections are persistent by default, no additional header is needed */
|
||||||
|
@ -1206,7 +1189,7 @@ static void test_persistent_connection(int port)
|
||||||
"Content-Length: 2\r\n"
|
"Content-Length: 2\r\n"
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"xx" );
|
"xx" );
|
||||||
read_request_data( &req, &info, "xx", FALSE );
|
read_request_data( &req, &info, "xx" );
|
||||||
close_request( &req, &info, FALSE );
|
close_request( &req, &info, FALSE );
|
||||||
|
|
||||||
open_async_request( port, &req, &info, L"/test", TRUE );
|
open_async_request( port, &req, &info, L"/test", TRUE );
|
||||||
|
@ -1218,6 +1201,7 @@ static void test_persistent_connection(int port)
|
||||||
"Connection: close\r\n"
|
"Connection: close\r\n"
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"yy" );
|
"yy" );
|
||||||
|
read_request_data( &req, &info, "yy" );
|
||||||
close_request( &req, &info, TRUE );
|
close_request( &req, &info, TRUE );
|
||||||
|
|
||||||
SetEvent( server_socket_done );
|
SetEvent( server_socket_done );
|
||||||
|
|
Loading…
Reference in a new issue