mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-30 04:48:36 +00:00
wininet: Unify timeout values closer to hInternet.
This commit is contained in:
parent
bb772c2f3e
commit
bc19f6f66d
|
@ -2280,11 +2280,11 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
|
|||
return err;
|
||||
}
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
if (*size < sizeof(DWORD))
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(DWORD);
|
||||
*(DWORD *)buffer = req->connect_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
*(ULONG *)buffer = hdr->connect_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_REQUEST_FLAGS: {
|
||||
DWORD flags = 0;
|
||||
|
@ -2363,20 +2363,6 @@ static DWORD HTTPREQ_SetOption(object_header_t *hdr, DWORD option, void *buffer,
|
|||
req->netconn->security_flags |= flags;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
req->connect_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
req->send_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
req->receive_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_USERNAME:
|
||||
free(req->session->userName);
|
||||
|
@ -3461,9 +3447,9 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session,
|
|||
|
||||
request->netconn_stream.data_stream.vtbl = &netconn_stream_vtbl;
|
||||
request->data_stream = &request->netconn_stream.data_stream;
|
||||
request->connect_timeout = session->connect_timeout;
|
||||
request->send_timeout = session->send_timeout;
|
||||
request->receive_timeout = session->receive_timeout;
|
||||
request->hdr.connect_timeout = session->hdr.connect_timeout;
|
||||
request->hdr.send_timeout = session->hdr.send_timeout;
|
||||
request->hdr.receive_timeout = session->hdr.receive_timeout;
|
||||
|
||||
InitializeCriticalSectionEx( &request->headers_section, 0, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO );
|
||||
request->headers_section.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": http_request_t.headers_section");
|
||||
|
@ -4946,7 +4932,7 @@ static DWORD open_http_connection(http_request_t *request, BOOL *reusing)
|
|||
|
||||
res = create_netconn(request->proxy ? request->proxy : request->server, request->security_flags,
|
||||
(request->hdr.ErrorMask & INTERNET_ERROR_MASK_COMBINED_SEC_CERT) != 0,
|
||||
request->connect_timeout, &netconn);
|
||||
request->hdr.connect_timeout, &netconn);
|
||||
if(res != ERROR_SUCCESS) {
|
||||
ERR("create_netconn failed: %lu\n", res);
|
||||
return res;
|
||||
|
@ -5140,7 +5126,7 @@ static DWORD HTTP_HttpSendRequestW(http_request_t *request, LPCWSTR lpszHeaders,
|
|||
INTERNET_SendCallback(&request->hdr, request->hdr.dwContext,
|
||||
INTERNET_STATUS_SENDING_REQUEST, NULL, 0);
|
||||
|
||||
NETCON_set_timeout( request->netconn, TRUE, request->send_timeout );
|
||||
NETCON_set_timeout( request->netconn, TRUE, request->hdr.send_timeout );
|
||||
res = NETCON_send(request->netconn, ascii_req, len, 0, &cnt);
|
||||
free(ascii_req);
|
||||
if(res != ERROR_SUCCESS) {
|
||||
|
@ -5820,7 +5806,6 @@ static void HTTPSESSION_Destroy(object_header_t *hdr)
|
|||
|
||||
static DWORD HTTPSESSION_QueryOption(object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
||||
{
|
||||
http_session_t *ses = (http_session_t *)hdr;
|
||||
|
||||
switch(option) {
|
||||
case INTERNET_OPTION_HANDLE_TYPE:
|
||||
|
@ -5832,35 +5817,6 @@ static DWORD HTTPSESSION_QueryOption(object_header_t *hdr, DWORD option, void *b
|
|||
*size = sizeof(DWORD);
|
||||
*(DWORD*)buffer = INTERNET_HANDLE_TYPE_CONNECT_HTTP;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_CONNECT_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(DWORD))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(DWORD);
|
||||
*(DWORD *)buffer = ses->connect_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_SEND_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(DWORD))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(DWORD);
|
||||
*(DWORD *)buffer = ses->send_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(DWORD))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(DWORD);
|
||||
*(DWORD *)buffer = ses->receive_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
return INET_QueryOption(hdr, option, buffer, size, unicode);
|
||||
|
@ -5895,24 +5851,6 @@ static DWORD HTTPSESSION_SetOption(object_header_t *hdr, DWORD option, void *buf
|
|||
if (!(ses->appInfo->proxyPassword = wcsdup(buffer))) return ERROR_OUTOFMEMORY;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
{
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
ses->connect_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
{
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
ses->send_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
{
|
||||
if (!buffer || size != sizeof(DWORD)) return ERROR_INVALID_PARAMETER;
|
||||
ses->receive_timeout = *(DWORD *)buffer;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
@ -5979,9 +5917,9 @@ DWORD HTTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
|
|||
session->userName = wcsdup(lpszUserName);
|
||||
session->password = wcsdup(lpszPassword);
|
||||
session->hostPort = serverPort;
|
||||
session->connect_timeout = hIC->connect_timeout;
|
||||
session->send_timeout = 0;
|
||||
session->receive_timeout = 0;
|
||||
session->hdr.connect_timeout = hIC->hdr.connect_timeout;
|
||||
session->hdr.send_timeout = hIC->hdr.send_timeout;
|
||||
session->hdr.receive_timeout = hIC->hdr.receive_timeout;
|
||||
|
||||
/* Don't send a handle created callback if this handle was created with InternetOpenUrl */
|
||||
if (!(session->hdr.dwInternalFlags & INET_OPENURL))
|
||||
|
@ -6057,7 +5995,7 @@ static DWORD HTTP_GetResponseHeaders(http_request_t *request, INT *len)
|
|||
/* clear old response headers (eg. from a redirect response) */
|
||||
HTTP_clear_response_headers( request );
|
||||
|
||||
NETCON_set_timeout( request->netconn, FALSE, request->receive_timeout );
|
||||
NETCON_set_timeout( request->netconn, FALSE, request->hdr.receive_timeout );
|
||||
do {
|
||||
/*
|
||||
* We should first receive 'HTTP/1.x nnn OK' where nnn is the status code.
|
||||
|
|
|
@ -106,6 +106,11 @@ typedef struct {
|
|||
|
||||
static ULONG max_conns = 2, max_1_0_conns = 4;
|
||||
static ULONG connect_timeout = 60000;
|
||||
static ULONG send_timeout = 60000;
|
||||
static ULONG receive_timeout = 60000;
|
||||
static ULONG data_send_timeout = 60000;
|
||||
static ULONG data_receive_timeout = 60000;
|
||||
|
||||
|
||||
static const WCHAR szInternetSettings[] =
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
|
||||
|
@ -174,6 +179,17 @@ void *alloc_object(object_header_t *parent, const object_vtbl_t *vtbl, size_t si
|
|||
if(parent) {
|
||||
ret->lpfnStatusCB = parent->lpfnStatusCB;
|
||||
ret->dwInternalFlags = parent->dwInternalFlags & INET_CALLBACKW;
|
||||
ret->connect_timeout = parent->connect_timeout;
|
||||
ret->send_timeout = parent->send_timeout;
|
||||
ret->receive_timeout = parent->receive_timeout;
|
||||
ret->data_send_timeout = parent->data_send_timeout;
|
||||
ret->data_receive_timeout = parent->data_receive_timeout;
|
||||
} else {
|
||||
ret->connect_timeout = connect_timeout;
|
||||
ret->send_timeout = send_timeout;
|
||||
ret->receive_timeout = receive_timeout;
|
||||
ret->data_send_timeout = data_send_timeout;
|
||||
ret->data_receive_timeout = data_receive_timeout;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -1147,17 +1163,6 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
|
|||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_CONNECT_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = ai->connect_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_PER_CONNECTION_OPTION: {
|
||||
INTERNET_PER_CONN_OPTION_LISTW *con = buffer;
|
||||
INTERNET_PER_CONN_OPTION_LISTA *conA = buffer;
|
||||
|
@ -1241,16 +1246,6 @@ static DWORD APPINFO_SetOption(object_header_t *hdr, DWORD option, void *buf, DW
|
|||
appinfo_t *ai = (appinfo_t*)hdr;
|
||||
|
||||
switch(option) {
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_CONNECT_TIMEOUT\n");
|
||||
|
||||
if(size != sizeof(connect_timeout))
|
||||
return ERROR_INTERNET_BAD_OPTION_LENGTH;
|
||||
if(!*(ULONG*)buf)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
|
||||
ai->connect_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_USER_AGENT:
|
||||
free(ai->agent);
|
||||
if (!(ai->agent = wcsdup(buf))) return ERROR_OUTOFMEMORY;
|
||||
|
@ -1381,7 +1376,6 @@ HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType,
|
|||
lpwai->accessType = dwAccessType;
|
||||
lpwai->proxyUsername = NULL;
|
||||
lpwai->proxyPassword = NULL;
|
||||
lpwai->connect_timeout = connect_timeout;
|
||||
|
||||
lpwai->agent = wcsdup(lpszAgent);
|
||||
if(dwAccessType == INTERNET_OPEN_TYPE_PRECONFIG)
|
||||
|
@ -3091,6 +3085,50 @@ static DWORD query_global_option(DWORD option, void *buffer, DWORD *size, BOOL u
|
|||
*(ULONG*)buffer = connect_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_SEND_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = send_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = receive_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_SEND_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = data_send_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = data_receive_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -3125,6 +3163,57 @@ DWORD INET_QueryOption(object_header_t *hdr, DWORD option, void *buffer, DWORD *
|
|||
case INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER:
|
||||
WARN("Called on global option %lu\n", option);
|
||||
return ERROR_INTERNET_INVALID_OPERATION;
|
||||
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_CONNECT_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*(ULONG*)buffer = hdr->connect_timeout;
|
||||
*size = sizeof(ULONG);
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_SEND_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(ULONG);
|
||||
*(ULONG *)buffer = hdr->send_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(ULONG);
|
||||
*(ULONG *)buffer = hdr->receive_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_SEND_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(ULONG);
|
||||
*(ULONG *)buffer = hdr->data_send_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
*size = sizeof(ULONG);
|
||||
*(ULONG *)buffer = hdr->data_receive_timeout;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
/* FIXME: we shouldn't call it here */
|
||||
|
@ -3213,6 +3302,26 @@ DWORD INET_SetOption(object_header_t *hdr, DWORD option, void *buf, DWORD size)
|
|||
return ERROR_INTERNET_INVALID_OPERATION;
|
||||
case INTERNET_OPTION_REFRESH:
|
||||
return ERROR_INTERNET_INCORRECT_HANDLE_TYPE;
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
if (!buf || size != sizeof(ULONG)) return ERROR_INVALID_PARAMETER;
|
||||
hdr->connect_timeout = *(ULONG *)buf;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
if (!buf || size != sizeof(ULONG)) return ERROR_INVALID_PARAMETER;
|
||||
hdr->send_timeout = *(ULONG *)buf;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
if (!buf || size != sizeof(ULONG)) return ERROR_INVALID_PARAMETER;
|
||||
hdr->receive_timeout = *(ULONG *)buf;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_DATA_SEND_TIMEOUT:
|
||||
if (!buf || size != sizeof(ULONG)) return ERROR_INVALID_PARAMETER;
|
||||
hdr->data_send_timeout = *(ULONG *)buf;
|
||||
return ERROR_SUCCESS;
|
||||
case INTERNET_OPTION_DATA_RECEIVE_TIMEOUT:
|
||||
if (!buf || size != sizeof(ULONG)) return ERROR_INVALID_PARAMETER;
|
||||
hdr->data_receive_timeout = *(ULONG *)buf;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
return ERROR_INTERNET_INVALID_OPTION;
|
||||
|
@ -3258,6 +3367,50 @@ static DWORD set_global_option(DWORD option, void *buf, DWORD size)
|
|||
connect_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_SEND_TIMEOUT\n");
|
||||
|
||||
if(size != sizeof(send_timeout))
|
||||
return ERROR_INTERNET_BAD_OPTION_LENGTH;
|
||||
if(!*(ULONG*)buf)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
|
||||
send_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if(size != sizeof(receive_timeout))
|
||||
return ERROR_INTERNET_BAD_OPTION_LENGTH;
|
||||
if(!*(ULONG*)buf)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
|
||||
receive_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_SEND_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_SEND_TIMEOUT\n");
|
||||
|
||||
if(size != sizeof(data_send_timeout))
|
||||
return ERROR_INTERNET_BAD_OPTION_LENGTH;
|
||||
if(!*(ULONG*)buf)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
|
||||
data_send_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_DATA_RECEIVE_TIMEOUT:
|
||||
TRACE("INTERNET_OPTION_DATA_RECEIVE_TIMEOUT\n");
|
||||
|
||||
if(size != sizeof(data_receive_timeout))
|
||||
return ERROR_INTERNET_BAD_OPTION_LENGTH;
|
||||
if(!*(ULONG*)buf)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
|
||||
data_receive_timeout = *(ULONG*)buf;
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_SUPPRESS_BEHAVIOR:
|
||||
FIXME("INTERNET_OPTION_SUPPRESS_BEHAVIOR stub\n");
|
||||
|
||||
|
@ -3383,18 +3536,6 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption,
|
|||
FIXME("Option INTERNET_OPTION_REQUEST_PRIORITY (%ld): STUB\n", priority);
|
||||
}
|
||||
break;
|
||||
case INTERNET_OPTION_CONNECT_TIMEOUT:
|
||||
{
|
||||
ULONG connecttimeout = *(ULONG *)lpBuffer;
|
||||
FIXME("Option INTERNET_OPTION_CONNECT_TIMEOUT (%ld): STUB\n", connecttimeout);
|
||||
}
|
||||
break;
|
||||
case INTERNET_OPTION_DATA_RECEIVE_TIMEOUT:
|
||||
{
|
||||
ULONG receivetimeout = *(ULONG *)lpBuffer;
|
||||
FIXME("Option INTERNET_OPTION_DATA_RECEIVE_TIMEOUT (%ld): STUB\n", receivetimeout);
|
||||
}
|
||||
break;
|
||||
case INTERNET_OPTION_RESET_URLCACHE_SESSION:
|
||||
FIXME("Option INTERNET_OPTION_RESET_URLCACHE_SESSION: STUB\n");
|
||||
break;
|
||||
|
@ -3412,14 +3553,6 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption,
|
|||
case INTERNET_OPTION_IGNORE_OFFLINE:
|
||||
FIXME("Option INTERNET_OPTION_IGNORE_OFFLINE: STUB\n");
|
||||
break;
|
||||
case INTERNET_OPTION_SEND_TIMEOUT:
|
||||
case INTERNET_OPTION_RECEIVE_TIMEOUT:
|
||||
case INTERNET_OPTION_DATA_SEND_TIMEOUT:
|
||||
{
|
||||
ULONG timeout = *(ULONG *)lpBuffer;
|
||||
FIXME("INTERNET_OPTION_SEND/RECEIVE_TIMEOUT/DATA_SEND_TIMEOUT %ld\n", timeout);
|
||||
break;
|
||||
}
|
||||
case INTERNET_OPTION_CONNECT_RETRIES:
|
||||
{
|
||||
ULONG retries = *(ULONG *)lpBuffer;
|
||||
|
|
|
@ -240,6 +240,11 @@ struct _object_header_t
|
|||
WH_TYPE htype;
|
||||
const object_vtbl_t *vtbl;
|
||||
HINTERNET hInternet;
|
||||
ULONG connect_timeout;
|
||||
ULONG send_timeout;
|
||||
ULONG receive_timeout;
|
||||
ULONG data_send_timeout;
|
||||
ULONG data_receive_timeout;
|
||||
BOOL valid_handle;
|
||||
DWORD dwFlags;
|
||||
DWORD_PTR dwContext;
|
||||
|
@ -262,7 +267,6 @@ typedef struct
|
|||
LPWSTR proxyUsername;
|
||||
LPWSTR proxyPassword;
|
||||
DWORD accessType;
|
||||
DWORD connect_timeout;
|
||||
} appinfo_t;
|
||||
|
||||
typedef struct
|
||||
|
@ -273,9 +277,6 @@ typedef struct
|
|||
LPWSTR userName;
|
||||
LPWSTR password;
|
||||
INTERNET_PORT hostPort; /* the final destination port of the request */
|
||||
DWORD connect_timeout;
|
||||
DWORD send_timeout;
|
||||
DWORD receive_timeout;
|
||||
} http_session_t;
|
||||
|
||||
#define HDR_ISREQUEST 0x0001
|
||||
|
@ -317,9 +318,6 @@ typedef struct
|
|||
LPWSTR verb;
|
||||
netconn_t *netconn;
|
||||
DWORD security_flags;
|
||||
DWORD connect_timeout;
|
||||
DWORD send_timeout;
|
||||
DWORD receive_timeout;
|
||||
LPWSTR version;
|
||||
DWORD status_code;
|
||||
LPWSTR statusText;
|
||||
|
|
|
@ -282,13 +282,59 @@ static void test_InternetQueryOptionA(void)
|
|||
|
||||
InternetCloseHandle(hinet);
|
||||
|
||||
/* Connect timeout */
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA failed %ld)\n", GetLastError());
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 12345, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Receive Timeout */
|
||||
val = 54321;
|
||||
res = InternetSetOptionA(NULL, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 54321, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Send Timeout */
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(NULL, INTERNET_OPTION_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_SEND_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 12345, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Data Receive Timeout */
|
||||
val = 54321;
|
||||
res = InternetSetOptionA(NULL, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 54321, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Data Send Timeout */
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(NULL, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 12345, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
|
@ -308,6 +354,7 @@ static void test_InternetQueryOptionA(void)
|
|||
ok(!res, "InternetQueryOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
|
||||
ok(GetLastError() == ERROR_INTERNET_INVALID_OPERATION, "GetLastError() = %lu\n", GetLastError());
|
||||
|
||||
/* Connect Timeout */
|
||||
val = 2;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val));
|
||||
ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
|
||||
|
@ -315,7 +362,7 @@ static void test_InternetQueryOptionA(void)
|
|||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA failed %ld)\n", GetLastError());
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 12345, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
|
@ -325,16 +372,141 @@ static void test_InternetQueryOptionA(void)
|
|||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA failed %ld)\n", GetLastError());
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 1, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Receive Timeout */
|
||||
val = 60;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA failed %ld)\n", GetLastError());
|
||||
ok(val == 12345, "val = %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 60, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Send Timeout */
|
||||
val = 120;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_SEND_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 120, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Data Receive Timeout */
|
||||
val = 60;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 60, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Data Send Timeout */
|
||||
val = 120;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
len = sizeof(val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, &len);
|
||||
ok(res, "InternetQueryOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed %ld)\n", GetLastError());
|
||||
ok(val == 120, "val = %ld\n", val);
|
||||
ok(len == sizeof(val), "len = %ld\n", len);
|
||||
|
||||
/* Timeout inheritance */
|
||||
val = 15000;
|
||||
len = sizeof(val);
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_CONNECT_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
hurl = InternetConnectA(hinet,"www.winehq.org",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "failed to inherit INTERNET_OPTION_CONNECT_TIMEOUT on child connection (found %ld) - Error: %ld)\n", val, GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "failed to inherit INTERNET_OPTION_SEND_TIMEOUT on child connection (found %ld) - Error: %ld)\n", val, GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "failed to inherit INTERNET_OPTION_RECEIVE_TIMEOUT on child connection (found %ld) - Error: %ld)\n", val, GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "failed to inherit INTERNET_OPTION_DATA_SEND_TIMEOUTt on child connection (found %ld) - Error: %ld)\n", val, GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "failed to inherit INTERNET_OPTION_DATA_RECEIVE_TIMEOUT on child connection (found %ld) - Error: %ld)\n", val, GetLastError());
|
||||
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_CONNECT_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "Connection handle inherited value (INTERNET_OPTION_CONNECT_TIMEOUT) as %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_CONNECT_TIMEOUT, &val, &len);
|
||||
ok(val == 12345, "Parent handle set from inherited value (INTERNET_OPTION_CONNECT_TIMEOUT) as %ld\n", val);
|
||||
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "Connection handle inherited value (INTERNET_OPTION_SEND_TIMEOUT) as %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 12345, "Parent handle set from inherited value (INTERNET_OPTION_SEND_TIMEOUT) as %ld\n", val);
|
||||
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "Connection handle inherited value (INTERNET_OPTION_RECEIVE_TIMEOUT) as %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 12345, "Parent handle set from inherited value (INTERNET_OPTION_RECEIVE_TIMEOUT) as %ld\n", val);
|
||||
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_SEND_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "Connection handle inherited value (INTERNET_OPTION_DATA_SEND_TIMEOUT) as %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_DATA_SEND_TIMEOUT, &val, &len);
|
||||
ok(val == 12345, "Parent handle set from inherited value (INTERNET_OPTION_DATA_SEND_TIMEOUT) as %ld\n", val);
|
||||
|
||||
val = 12345;
|
||||
res = InternetSetOptionA(hinet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, sizeof(val));
|
||||
ok(res, "InternetSetOptionA(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) failed (%lu)\n", GetLastError());
|
||||
|
||||
val = 0xdeadbeef;
|
||||
res = InternetQueryOptionA(hurl, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 15000, "Connection handle inherited value (INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) as %ld\n", val);
|
||||
res = InternetQueryOptionA(hinet, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, &val, &len);
|
||||
ok(val == 12345, "Parent handle set from inherited value (INTERNET_OPTION_DATA_RECEIVE_TIMEOUT) as %ld\n", val);
|
||||
|
||||
InternetCloseHandle(hurl);
|
||||
InternetCloseHandle(hinet);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue