[PATCH #1] wininet: Added beginning support for HTTP cache files.

Robert Shearman rob at codeweavers.com
Wed Feb 13 07:10:23 CST 2008


Jacek Caban wrote:
> +    /* FIXME: Better check, when we have to create the cache file */
> +    if(bSuccess && (lpwhr->hdr.dwFlags & INTERNET_FLAG_NEED_FILE)) {
> +        WCHAR url[INTERNET_MAX_URL_LENGTH];
> +        WCHAR cacheFileName[MAX_PATH+1];
> +        BOOL b;
> +
> +        b = HTTP_GetRequestURL(lpwhr, url);
> +        if(!b) {
> +            WARN("Could not get URL\n");
> +            goto lend;
> +        }
> +
> +        b = CreateUrlCacheEntryW(url, lpwhr->dwContentLength > 0 ? lpwhr->dwContentLength : 0, NULL, cacheFileName, 0);
> +        if(b) {
> +            lpwhr->lpszCacheFile = WININET_strdupW(cacheFileName);
> +            lpwhr->hCacheFile = CreateFileW(lpwhr->lpszCacheFile, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
> +                      NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
> +            if(lpwhr->hCacheFile == INVALID_HANDLE_VALUE) {
> +                WARN("Could not create file: %u\n", GetLastError());
> +                lpwhr->hCacheFile = NULL;
> +            }
> +        }else {
> +            WARN("Could not create cache entry: %08x\n", GetLastError());
> +        }
> +    }
>
>   

It may be beyond the scope of your patch, but you're creating the cache 
file without committing the entry elsewhere so that it can be found at a 
later time. According to MSDN, this should be done in HTTP_FinishedReading.

-- 
Rob Shearman




More information about the wine-devel mailing list