Juan Lang : cryptnet: Get cache entry expire time from HTTP expires header.
Alexandre Julliard
julliard at winehq.org
Wed Oct 24 11:04:40 CDT 2007
Module: wine
Branch: master
Commit: 45f260e3e2cd29b4ec603d0b36a566c470f14061
URL: http://source.winehq.org/git/wine.git/?a=commit;h=45f260e3e2cd29b4ec603d0b36a566c470f14061
Author: Juan Lang <juan.lang at gmail.com>
Date: Tue Oct 23 12:51:21 2007 -0700
cryptnet: Get cache entry expire time from HTTP expires header.
---
dlls/cryptnet/cryptnet_main.c | 21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/dlls/cryptnet/cryptnet_main.c b/dlls/cryptnet/cryptnet_main.c
index 21489ff..5d1f6f7 100644
--- a/dlls/cryptnet/cryptnet_main.c
+++ b/dlls/cryptnet/cryptnet_main.c
@@ -396,7 +396,6 @@ static BOOL CRYPT_GetObjectFromFile(HANDLE hFile, PCRYPT_BLOB_ARRAY pObject)
}
/* FIXME: should make wininet cache all downloads instead */
-/* FIXME: how do I know the cached object is up to date? */
static BOOL CRYPT_GetObjectFromCache(LPCWSTR pszURL, PCRYPT_BLOB_ARRAY pObject,
PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
{
@@ -610,7 +609,7 @@ static BOOL CRYPT_DownloadObject(DWORD dwRetrievalFlags, HINTERNET hHttp,
}
static void CRYPT_CacheURL(LPCWSTR pszURL, PCRYPT_BLOB_ARRAY pObject,
- DWORD dwRetrievalFlags)
+ DWORD dwRetrievalFlags, FILETIME expires)
{
WCHAR cacheFileName[MAX_PATH];
@@ -633,7 +632,7 @@ static void CRYPT_CacheURL(LPCWSTR pszURL, PCRYPT_BLOB_ARRAY pObject,
WriteFile(hCacheFile, pObject->rgBlob[0].pbData,
pObject->rgBlob[0].cbData, &bytesWritten, NULL);
CloseHandle(hCacheFile);
- CommitUrlCacheEntryW(pszURL, cacheFileName, ft, ft, entryType,
+ CommitUrlCacheEntryW(pszURL, cacheFileName, expires, ft, entryType,
NULL, 0, NULL, NULL);
}
}
@@ -820,7 +819,21 @@ static BOOL WINAPI HTTP_RetrieveEncodedObjectW(LPCWSTR pszURL,
ret = CRYPT_DownloadObject(dwRetrievalFlags, hHttp,
context, pObject, pAuxInfo);
if (ret && !(dwRetrievalFlags & CRYPT_DONT_CACHE_RESULT))
- CRYPT_CacheURL(pszURL, pObject, dwRetrievalFlags);
+ {
+ SYSTEMTIME st;
+ DWORD len = sizeof(st);
+
+ if (HttpQueryInfoW(hHttp,
+ HTTP_QUERY_EXPIRES | HTTP_QUERY_FLAG_SYSTEMTIME, &st,
+ &len, NULL))
+ {
+ FILETIME ft;
+
+ SystemTimeToFileTime(&st, &ft);
+ CRYPT_CacheURL(pszURL, pObject, dwRetrievalFlags,
+ ft);
+ }
+ }
InternetCloseHandle(hHttp);
}
InternetCloseHandle(hHost);
More information about the wine-cvs
mailing list