Author: akhaldi Date: Sun Sep 24 11:17:59 2017 New Revision: 75946
URL: http://svn.reactos.org/svn/reactos?rev=75946&view=rev Log: [WININET] Sync with Wine Staging 2.16. CORE-13762
43deec9 wininet: Use standard wine_dbgstr_longlong. 085ce26 wininet: Drain content before reusing connection in open_http_connection. 59395d8 wininet: Never do blocking reads in chunked_read if zero chunk size is aready read. 4f40039 wininet: Release connection in HTTPREQ_Read only if remaining control data may be drainad without blocking. 8090d16 wininet: Store error state separately from end of stream in chunked stream. 752d078 wininet: Always use drain_content specific to stream type. 90b936f wininet: Try to read reamaining data in chunked_drain_content. 2ecdac8 wininet: Return error codes from HTTP streams. 7949a22 wininet: Correctly pass URL length to InternetCrackUrlW in get_redirect_url. a24b826 wininet: Improved cookie debug traces. f55a116 wininet: Fix potential use-after-free (Coverity). 89f1d8c wininet: Fixed connection_pool_cs declaration. cee9982 wininet: Return an error on redirect with no host name specified. 61e28c0 wininet: Moved INTERNET_STATUS_REDIRECT notification to HTTP_HandleRedirect. 9c95915 wininet: Correctly handle redirects to non-http URLs.
Modified: trunk/reactos/dll/win32/wininet/cookie.c trunk/reactos/dll/win32/wininet/http.c trunk/reactos/dll/win32/wininet/urlcache.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/wininet/cookie.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/cookie.c?... ============================================================================== --- trunk/reactos/dll/win32/wininet/cookie.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/cookie.c [iso-8859-1] Sun Sep 24 11:17:59 2017 @@ -544,17 +544,11 @@ }
for(domain = get_cookie_domain(host, FALSE); domain; domain = domain->parent) { - TRACE("Trying %s domain...\n", debugstr_w(domain->domain)); - LIST_FOR_EACH_ENTRY(container, &domain->path_list, cookie_container_t, entry) { struct list *cursor, *cursor2;
- TRACE("path %s\n", debugstr_wn(container->path.str, container->path.len)); - if(!cookie_match_path(container, path)) continue; - - TRACE("found domain %p\n", domain->domain);
LIST_FOR_EACH_SAFE(cursor, cursor2, &container->cookie_list) { cookie_t *cookie_iter = LIST_ENTRY(cursor, cookie_t, entry); @@ -569,7 +563,6 @@
if((cookie_iter->flags & INTERNET_COOKIE_HTTPONLY) && !(flags & INTERNET_COOKIE_HTTPONLY)) continue; -
if(!res->size) { res->cookies = heap_alloc(4*sizeof(*res->cookies)); @@ -584,6 +577,9 @@ res->size *= 2; }
+ TRACE("%s = %s domain %s path %s\n", debugstr_w(cookie_iter->name), debugstr_w(cookie_iter->data), + debugstr_w(domain->domain), debugstr_wn(container->path.str, container->path.len)); + if(res->cnt) res->string_len += 2; /* '; ' */ res->cookies[res->cnt++] = cookie_iter;
Modified: trunk/reactos/dll/win32/wininet/http.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/http.c?re... ============================================================================== --- trunk/reactos/dll/win32/wininet/http.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/http.c [iso-8859-1] Sun Sep 24 11:17:59 2017 @@ -180,13 +180,13 @@ static LPWSTR HTTP_build_req( LPCWSTR *list, int len ); static DWORD HTTP_HttpQueryInfoW(http_request_t*, DWORD, LPVOID, LPDWORD, LPDWORD); static UINT HTTP_DecodeBase64(LPCWSTR base64, LPSTR bin); -static BOOL drain_content(http_request_t*,BOOL); +static DWORD drain_content(http_request_t*,BOOL);
static CRITICAL_SECTION connection_pool_cs; static CRITICAL_SECTION_DEBUG connection_pool_debug = { 0, 0, &connection_pool_cs, - { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList }, + { &connection_pool_debug.ProcessLocksList, &connection_pool_debug.ProcessLocksList }, 0, 0, { (DWORD_PTR)(__FILE__ ": connection_pool_cs") } }; static CRITICAL_SECTION connection_pool_cs = { &connection_pool_debug, -1, 0, 0, 0, 0 }; @@ -367,7 +367,7 @@ struct data_stream_vtbl_t { BOOL (*end_of_data)(data_stream_t*,http_request_t*); DWORD (*read)(data_stream_t*,http_request_t*,BYTE*,DWORD,DWORD*,BOOL); - BOOL (*drain_content)(data_stream_t*,http_request_t*); + DWORD (*drain_content)(data_stream_t*,http_request_t*,BOOL); void (*destroy)(data_stream_t*); };
@@ -385,7 +385,8 @@ CHUNKED_STREAM_STATE_READING_CHUNK, CHUNKED_STREAM_STATE_DISCARD_EOL_AFTER_DATA, CHUNKED_STREAM_STATE_DISCARD_EOL_AT_END, - CHUNKED_STREAM_STATE_END_OF_STREAM + CHUNKED_STREAM_STATE_END_OF_STREAM, + CHUNKED_STREAM_STATE_ERROR } state; } chunked_stream_t;
@@ -493,10 +494,10 @@ return res; }
-static BOOL gzip_drain_content(data_stream_t *stream, http_request_t *req) +static DWORD gzip_drain_content(data_stream_t *stream, http_request_t *req, BOOL allow_blocking) { gzip_stream_t *gzip_stream = (gzip_stream_t*)stream; - return gzip_stream->parent_stream->vtbl->drain_content(gzip_stream->parent_stream, req); + return gzip_stream->parent_stream->vtbl->drain_content(gzip_stream->parent_stream, req, allow_blocking); }
static void gzip_destroy(data_stream_t *stream) @@ -2005,7 +2006,7 @@ { http_request_t *req = (http_request_t*)hdr;
- http_release_netconn(req, drain_content(req, FALSE)); + http_release_netconn(req, drain_content(req, FALSE) == ERROR_SUCCESS); }
static DWORD str_to_buffer(const WCHAR *str, void *buffer, DWORD *size, BOOL unicode) @@ -2628,7 +2629,7 @@ return res; }
-static BOOL netconn_drain_content(data_stream_t *stream, http_request_t *req) +static DWORD netconn_drain_content(data_stream_t *stream, http_request_t *req, BOOL allow_blocking) { netconn_stream_t *netconn_stream = (netconn_stream_t*)stream; BYTE buf[1024]; @@ -2636,18 +2637,20 @@ size_t size;
if(netconn_stream->content_length == ~0u) - return FALSE; + return WSAEISCONN;
while(netconn_stream->content_read < netconn_stream->content_length) { size = min(sizeof(buf), netconn_stream->content_length-netconn_stream->content_read); - res = NETCON_recv(req->netconn, buf, size, FALSE, &len); - if(res || !len) - return FALSE; + res = NETCON_recv(req->netconn, buf, size, allow_blocking, &len); + if(res) + return res; + if(!len) + return WSAECONNABORTED;
netconn_stream->content_read += len; }
- return TRUE; + return ERROR_SUCCESS; }
static void netconn_destroy(data_stream_t *stream) @@ -2672,7 +2675,14 @@ static BOOL chunked_end_of_data(data_stream_t *stream, http_request_t *req) { chunked_stream_t *chunked_stream = (chunked_stream_t*)stream; - return chunked_stream->state == CHUNKED_STREAM_STATE_END_OF_STREAM; + switch(chunked_stream->state) { + case CHUNKED_STREAM_STATE_DISCARD_EOL_AT_END: + case CHUNKED_STREAM_STATE_END_OF_STREAM: + case CHUNKED_STREAM_STATE_ERROR: + return TRUE; + default: + return FALSE; + } }
static DWORD chunked_read(data_stream_t *stream, http_request_t *req, BYTE *buf, DWORD size, @@ -2689,22 +2699,28 @@
/* Ensure that we have data in the buffer for states that need it. */ if(!chunked_stream->buf_size) { + BOOL blocking_read = allow_blocking; + switch(chunked_stream->state) { + case CHUNKED_STREAM_STATE_DISCARD_EOL_AT_END: + case CHUNKED_STREAM_STATE_DISCARD_EOL_AFTER_SIZE: + /* never allow blocking after 0 chunk size */ + if(!chunked_stream->chunk_size) + blocking_read = FALSE; + /* fall through */ case CHUNKED_STREAM_STATE_READING_CHUNK_SIZE: - case CHUNKED_STREAM_STATE_DISCARD_EOL_AFTER_SIZE: case CHUNKED_STREAM_STATE_DISCARD_EOL_AFTER_DATA: - case CHUNKED_STREAM_STATE_DISCARD_EOL_AT_END: chunked_stream->buf_pos = 0; - res = NETCON_recv(req->netconn, chunked_stream->buf, sizeof(chunked_stream->buf), allow_blocking, &read_bytes); + res = NETCON_recv(req->netconn, chunked_stream->buf, sizeof(chunked_stream->buf), blocking_read, &read_bytes); if(res == ERROR_SUCCESS && read_bytes) { chunked_stream->buf_size += read_bytes; }else if(res == WSAEWOULDBLOCK) { - if(ret_read) + if(ret_read || allow_blocking) res = ERROR_SUCCESS; continue_read = FALSE; continue; }else { - chunked_stream->state = CHUNKED_STREAM_STATE_END_OF_STREAM; + chunked_stream->state = CHUNKED_STREAM_STATE_ERROR; } break; default: @@ -2766,7 +2782,7 @@ }
if(!read_bytes) { - chunked_stream->state = CHUNKED_STREAM_STATE_END_OF_STREAM; + chunked_stream->state = CHUNKED_STREAM_STATE_ERROR; continue; } } @@ -2796,6 +2812,7 @@ break;
case CHUNKED_STREAM_STATE_END_OF_STREAM: + case CHUNKED_STREAM_STATE_ERROR: continue_read = FALSE; break; } @@ -2811,10 +2828,22 @@ return ERROR_SUCCESS; }
-static BOOL chunked_drain_content(data_stream_t *stream, http_request_t *req) +static DWORD chunked_drain_content(data_stream_t *stream, http_request_t *req, BOOL allow_blocking) { chunked_stream_t *chunked_stream = (chunked_stream_t*)stream; - return chunked_stream->state == CHUNKED_STREAM_STATE_END_OF_STREAM; + BYTE buf[1024]; + DWORD size, res; + + while(chunked_stream->state != CHUNKED_STREAM_STATE_END_OF_STREAM + && chunked_stream->state != CHUNKED_STREAM_STATE_ERROR) { + res = chunked_read(stream, req, buf, sizeof(buf), &size, allow_blocking); + if(res != ERROR_SUCCESS) + return res; + } + + if(chunked_stream->state != CHUNKED_STREAM_STATE_END_OF_STREAM) + return ERROR_NO_DATA; + return ERROR_SUCCESS; }
static void chunked_destroy(data_stream_t *stream) @@ -2968,46 +2997,34 @@ LeaveCriticalSection( &req->read_section );
*read = ret_read; - TRACE( "retrieved %u bytes (%u)\n", ret_read, req->contentLength ); - - if(res != WSAEWOULDBLOCK && (!ret_read || res != ERROR_SUCCESS)) - http_release_netconn(req, res == ERROR_SUCCESS); + TRACE( "retrieved %u bytes (res %u)\n", ret_read, res ); + + if(res != WSAEWOULDBLOCK) { + if(res != ERROR_SUCCESS) + http_release_netconn(req, FALSE); + else if(!ret_read && drain_content(req, FALSE) == ERROR_SUCCESS) + http_release_netconn(req, TRUE); + }
return res; }
-static BOOL drain_content(http_request_t *req, BOOL blocking) -{ - BOOL ret; - - if(!is_valid_netconn(req->netconn) || req->contentLength == -1) - return FALSE; +static DWORD drain_content(http_request_t *req, BOOL blocking) +{ + DWORD res; + + TRACE("%p\n", req->netconn); + + if(!is_valid_netconn(req->netconn)) + return ERROR_NO_DATA;
if(!strcmpW(req->verb, szHEAD)) - return TRUE; - - if(!blocking) - return req->data_stream->vtbl->drain_content(req->data_stream, req); + return ERROR_SUCCESS;
EnterCriticalSection( &req->read_section ); - - while(1) { - DWORD bytes_read, res; - BYTE buf[4096]; - - res = HTTPREQ_Read(req, buf, sizeof(buf), &bytes_read, TRUE); - if(res != ERROR_SUCCESS) { - ret = FALSE; - break; - } - if(!bytes_read) { - ret = TRUE; - break; - } - } - + res = req->data_stream->vtbl->drain_content(req->data_stream, req, blocking); LeaveCriticalSection( &req->read_section ); - return ret; + return res; }
typedef struct { @@ -3042,7 +3059,7 @@ if(task->ret_read) complete_arg = read; /* QueryDataAvailable reports read bytes in request complete notification */ if(res != ERROR_SUCCESS || !read) - http_release_netconn(req, drain_content(req, FALSE)); + http_release_netconn(req, drain_content(req, FALSE) == ERROR_SUCCESS); }
TRACE("res %u read %u\n", res, read); @@ -3987,7 +4004,16 @@ return NULL; }
+ urlComponents.dwSchemeLength = 1; + b = InternetCrackUrlW(redirect_url, url_length / sizeof(WCHAR), 0, &urlComponents); + if(b && urlComponents.dwSchemeLength && + urlComponents.nScheme != INTERNET_SCHEME_HTTP && urlComponents.nScheme != INTERNET_SCHEME_HTTPS) { + TRACE("redirect to non-http URL\n"); + return NULL; + } + urlComponents.lpszScheme = (request->hdr.dwFlags & INTERNET_FLAG_SECURE) ? szHttps : szHttp; + urlComponents.dwSchemeLength = 0; urlComponents.lpszHostName = request->server->name; urlComponents.nPort = request->server->port; urlComponents.lpszUserName = session->userName; @@ -4024,30 +4050,36 @@ /*********************************************************************** * HTTP_HandleRedirect (internal) */ -static DWORD HTTP_HandleRedirect(http_request_t *request, LPCWSTR lpszUrl) -{ +static DWORD HTTP_HandleRedirect(http_request_t *request, WCHAR *url) +{ + URL_COMPONENTSW urlComponents = { sizeof(urlComponents) }; http_session_t *session = request->session; - WCHAR *path; - - if(lpszUrl[0]=='/') + size_t url_len = strlenW(url); + + if(url[0] == '/') { /* if it's an absolute path, keep the same session info */ - path = heap_strdupW(lpszUrl); + urlComponents.lpszUrlPath = url; + urlComponents.dwUrlPathLength = url_len; } else { - URL_COMPONENTSW urlComponents = { sizeof(urlComponents) }; - BOOL custom_port = FALSE; - substr_t host; - urlComponents.dwHostNameLength = 1; urlComponents.dwUserNameLength = 1; urlComponents.dwUrlPathLength = 1; - if(!InternetCrackUrlW(lpszUrl, strlenW(lpszUrl), 0, &urlComponents)) + if(!InternetCrackUrlW(url, url_len, 0, &urlComponents)) return INTERNET_GetLastError();
- if (!urlComponents.dwHostNameLength) + if(!urlComponents.dwHostNameLength) return ERROR_INTERNET_INVALID_URL; + } + + INTERNET_SendCallback(&request->hdr, request->hdr.dwContext, INTERNET_STATUS_REDIRECT, + url, (url_len + 1) * sizeof(WCHAR)); + + if(urlComponents.dwHostNameLength) { + BOOL custom_port = FALSE; + substr_t host;
if(urlComponents.nScheme == INTERNET_SCHEME_HTTP) { if(request->hdr.dwFlags & INTERNET_FLAG_SECURE) { @@ -4094,17 +4126,18 @@ HTTP_ProcessHeader(request, hostW, request->server->host_port, HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDHDR_FLAG_REQ); else HTTP_ProcessHeader(request, hostW, request->server->name, HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDHDR_FLAG_REQ); - - path = heap_strndupW(urlComponents.lpszUrlPath, urlComponents.dwUrlPathLength); - } + } + heap_free(request->path); request->path = NULL; - if (*path) + if(urlComponents.dwUrlPathLength) { DWORD needed = 1; HRESULT rc; WCHAR dummy = 0; - + WCHAR *path; + + path = heap_strndupW(urlComponents.lpszUrlPath, urlComponents.dwUrlPathLength); rc = UrlEscapeW(path, &dummy, &needed, URL_ESCAPE_SPACES_ONLY); if (rc != E_POINTER) ERR("Unable to escape string!(%s) (%d)\n",debugstr_w(path),rc); @@ -4116,9 +4149,8 @@ ERR("Unable to escape string!(%s) (%d)\n",debugstr_w(path),rc); strcpyW(request->path, path); } - } - - heap_free(path); + heap_free(path); + }
/* Remove custom content-type/length headers on redirects. */ remove_header(request, szContent_Type, TRUE); @@ -4707,21 +4739,21 @@ netconn_t *netconn = NULL; DWORD res;
- reset_data_stream(request); - if (request->netconn) { - if (is_valid_netconn(request->netconn) && NETCON_is_alive(request->netconn)) - { + if (NETCON_is_alive(request->netconn) && drain_content(request, TRUE) == ERROR_SUCCESS) + { + reset_data_stream(request); *reusing = TRUE; return ERROR_SUCCESS; } - else - { - free_netconn(request->netconn); - request->netconn = NULL; - } - } + + TRACE("freeing netconn\n"); + free_netconn(request->netconn); + request->netconn = NULL; + } + + reset_data_stream(request);
res = HTTP_ResolveName(request); if(res != ERROR_SUCCESS) @@ -5027,9 +5059,7 @@ heap_free(request->verb); request->verb = heap_strdupW(szGET); } - http_release_netconn(request, drain_content(request, FALSE)); - INTERNET_SendCallback(&request->hdr, request->hdr.dwContext, INTERNET_STATUS_REDIRECT, - new_url, (strlenW(new_url) + 1) * sizeof(WCHAR)); + http_release_netconn(request, drain_content(request, FALSE) == ERROR_SUCCESS); res = HTTP_HandleRedirect(request, new_url); heap_free(new_url); if (res == ERROR_SUCCESS) { @@ -5055,7 +5085,7 @@ request->session->password, host)) { heap_free(requestString); - if(!drain_content(request, TRUE)) { + if(!drain_content(request, TRUE) == ERROR_SUCCESS) { FIXME("Could not drain content\n"); http_release_netconn(request, FALSE); } @@ -5083,7 +5113,7 @@ NULL)) { heap_free(requestString); - if(!drain_content(request, TRUE)) { + if(!drain_content(request, TRUE) == ERROR_SUCCESS) { FIXME("Could not drain content\n"); http_release_netconn(request, FALSE); } @@ -5225,9 +5255,7 @@ heap_free(request->verb); request->verb = heap_strdupW(szGET); } - http_release_netconn(request, drain_content(request, FALSE)); - INTERNET_SendCallback(&request->hdr, request->hdr.dwContext, INTERNET_STATUS_REDIRECT, - new_url, (strlenW(new_url) + 1) * sizeof(WCHAR)); + http_release_netconn(request, drain_content(request, FALSE) == ERROR_SUCCESS); res = HTTP_HandleRedirect(request, new_url); heap_free(new_url); if (res == ERROR_SUCCESS)
Modified: trunk/reactos/dll/win32/wininet/urlcache.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/urlcache.... ============================================================================== --- trunk/reactos/dll/win32/wininet/urlcache.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/urlcache.c [iso-8859-1] Sun Sep 24 11:17:59 2017 @@ -3424,8 +3424,8 @@ LPVOID lpReserved3 ) { - FIXME("(%s, 0x%08x, 0x%08x, 0x%08x%08x, %p, %p, %p, %p, %p) stub\n", debugstr_a(lpszUrlSearchPattern), - dwFlags, dwFilter, (ULONG)(GroupId >> 32), (ULONG)GroupId, lpFirstCacheEntryInfo, + FIXME("(%s, 0x%08x, 0x%08x, 0x%s, %p, %p, %p, %p, %p) stub\n", debugstr_a(lpszUrlSearchPattern), + dwFlags, dwFilter, wine_dbgstr_longlong(GroupId), lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize, lpReserved, pcbReserved2,lpReserved3); SetLastError(ERROR_FILE_NOT_FOUND); return NULL; @@ -3443,8 +3443,8 @@ LPVOID lpReserved3 ) { - FIXME("(%s, 0x%08x, 0x%08x, 0x%08x%08x, %p, %p, %p, %p, %p) stub\n", debugstr_w(lpszUrlSearchPattern), - dwFlags, dwFilter, (ULONG)(GroupId >> 32), (ULONG)GroupId, lpFirstCacheEntryInfo, + FIXME("(%s, 0x%08x, 0x%08x, 0x%s, %p, %p, %p, %p, %p) stub\n", debugstr_w(lpszUrlSearchPattern), + dwFlags, dwFilter, wine_dbgstr_longlong(GroupId), lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize, lpReserved, pcbReserved2,lpReserved3); SetLastError(ERROR_FILE_NOT_FOUND); return NULL; @@ -3720,8 +3720,8 @@ */ BOOL WINAPI DeleteUrlCacheGroup(GROUPID GroupId, DWORD dwFlags, LPVOID lpReserved) { - FIXME("(0x%08x%08x, 0x%08x, %p) stub\n", - (ULONG)(GroupId >> 32), (ULONG)GroupId, dwFlags, lpReserved); + FIXME("(0x%s, 0x%08x, %p) stub\n", + wine_dbgstr_longlong(GroupId), dwFlags, lpReserved); return FALSE; }
@@ -3743,8 +3743,8 @@ GROUPID GroupId, LPBYTE pbGroupAttributes, DWORD cbGroupAttributes, LPVOID lpReserved) { - FIXME("(%s, 0x%08x, 0x%08x%08x, %p, 0x%08x, %p) stub\n", - debugstr_a(lpszUrlName), dwFlags, (ULONG)(GroupId >> 32), (ULONG)GroupId, + FIXME("(%s, 0x%08x, 0x%s, %p, 0x%08x, %p) stub\n", + debugstr_a(lpszUrlName), dwFlags, wine_dbgstr_longlong(GroupId), pbGroupAttributes, cbGroupAttributes, lpReserved); SetLastError(ERROR_FILE_NOT_FOUND); return FALSE; @@ -3758,8 +3758,8 @@ GROUPID GroupId, LPBYTE pbGroupAttributes, DWORD cbGroupAttributes, LPVOID lpReserved) { - FIXME("(%s, 0x%08x, 0x%08x%08x, %p, 0x%08x, %p) stub\n", - debugstr_w(lpszUrlName), dwFlags, (ULONG)(GroupId >> 32), (ULONG)GroupId, + FIXME("(%s, 0x%08x, 0x%s, %p, 0x%08x, %p) stub\n", + debugstr_w(lpszUrlName), dwFlags, wine_dbgstr_longlong(GroupId), pbGroupAttributes, cbGroupAttributes, lpReserved); SetLastError(ERROR_FILE_NOT_FOUND); return FALSE; @@ -3789,8 +3789,8 @@ LPINTERNET_CACHE_GROUP_INFOA lpGroupInfo, LPDWORD lpdwGroupInfo, LPVOID lpReserved ) { - FIXME("(0x%08x%08x, 0x%08x, 0x%08x, %p, %p, %p) stub\n", - (ULONG)(gid >> 32), (ULONG)gid, dwFlags, dwAttributes, lpGroupInfo, + FIXME("(0x%s, 0x%08x, 0x%08x, %p, %p, %p) stub\n", + wine_dbgstr_longlong(gid), dwFlags, dwAttributes, lpGroupInfo, lpdwGroupInfo, lpReserved); return FALSE; } @@ -3799,8 +3799,8 @@ LPINTERNET_CACHE_GROUP_INFOW lpGroupInfo, LPDWORD lpdwGroupInfo, LPVOID lpReserved ) { - FIXME("(0x%08x%08x, 0x%08x, 0x%08x, %p, %p, %p) stub\n", - (ULONG)(gid >> 32), (ULONG)gid, dwFlags, dwAttributes, lpGroupInfo, + FIXME("(0x%s, 0x%08x, 0x%08x, %p, %p, %p) stub\n", + wine_dbgstr_longlong(gid), dwFlags, dwAttributes, lpGroupInfo, lpdwGroupInfo, lpReserved); return FALSE; } @@ -3808,16 +3808,16 @@ BOOL WINAPI SetUrlCacheGroupAttributeA( GROUPID gid, DWORD dwFlags, DWORD dwAttributes, LPINTERNET_CACHE_GROUP_INFOA lpGroupInfo, LPVOID lpReserved ) { - FIXME("(0x%08x%08x, 0x%08x, 0x%08x, %p, %p) stub\n", - (ULONG)(gid >> 32), (ULONG)gid, dwFlags, dwAttributes, lpGroupInfo, lpReserved); + FIXME("(0x%s, 0x%08x, 0x%08x, %p, %p) stub\n", + wine_dbgstr_longlong(gid), dwFlags, dwAttributes, lpGroupInfo, lpReserved); return TRUE; }
BOOL WINAPI SetUrlCacheGroupAttributeW( GROUPID gid, DWORD dwFlags, DWORD dwAttributes, LPINTERNET_CACHE_GROUP_INFOW lpGroupInfo, LPVOID lpReserved ) { - FIXME("(0x%08x%08x, 0x%08x, 0x%08x, %p, %p) stub\n", - (ULONG)(gid >> 32), (ULONG)gid, dwFlags, dwAttributes, lpGroupInfo, lpReserved); + FIXME("(0x%s, 0x%08x, 0x%08x, %p, %p) stub\n", + wine_dbgstr_longlong(gid), dwFlags, dwAttributes, lpGroupInfo, lpReserved); return TRUE; }
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=7... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sun Sep 24 11:17:59 2017 @@ -201,7 +201,7 @@ reactos/dll/win32/winemp3.acm # Synced to WineStaging-2.16 reactos/dll/win32/wing32 # Synced to WineStaging-2.9 reactos/dll/win32/winhttp # Synced to WineStaging-2.16 -reactos/dll/win32/wininet # Synced to WineStaging-2.9 +reactos/dll/win32/wininet # Synced to WineStaging-2.16 reactos/dll/win32/winmm # Forked at Wine-20050628 reactos/dll/win32/winmm/midimap # Forked at Wine-20050628 reactos/dll/win32/winmm/wavemap # Forked at Wine-20050628