Module: wine Branch: master Commit: 41b582beff420e33a34f3f4fd3e9bd559499b3a4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=41b582beff420e33a34f3f4fd3...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Apr 1 13:16:37 2013 +0200
wininet: Support Punycode in IsUrlCacheEntryExpiredW.
---
dlls/wininet/urlcache.c | 90 +++++------------------------------------------ 1 files changed, 9 insertions(+), 81 deletions(-)
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index 0d8c9aa..a9d533d 100644 --- a/dlls/wininet/urlcache.c +++ b/dlls/wininet/urlcache.c @@ -1507,23 +1507,6 @@ static BOOL urlcache_find_hash_entry(const urlcache_header *pHeader, LPCSTR lpsz return FALSE; }
-static BOOL urlcache_find_hash_entryW(const urlcache_header *pHeader, LPCWSTR lpszUrl, struct hash_entry **ppHashEntry) -{ - LPSTR urlA; - BOOL ret; - - urlA = heap_strdupWtoA(lpszUrl); - if (!urlA) - { - SetLastError(ERROR_OUTOFMEMORY); - return FALSE; - } - - ret = urlcache_find_hash_entry(pHeader, urlA, ppHashEntry); - heap_free(urlA); - return ret; -} - /*********************************************************************** * urlcache_hash_entry_set_flags (Internal) * @@ -4022,7 +4005,7 @@ static BOOL urlcache_entry_is_expired(const entry_url *pUrlEntry, * dwFlags [I] Unknown * pftLastModified [O] Last modified time */ -BOOL WINAPI IsUrlCacheEntryExpiredA( LPCSTR url, DWORD dwFlags, FILETIME* pftLastModified ) +BOOL WINAPI IsUrlCacheEntryExpiredA(LPCSTR url, DWORD dwFlags, FILETIME* pftLastModified) { urlcache_header *pHeader; struct hash_entry *pHashEntry; @@ -4090,72 +4073,17 @@ BOOL WINAPI IsUrlCacheEntryExpiredA( LPCSTR url, DWORD dwFlags, FILETIME* pftLas * dwFlags [I] Unknown * pftLastModified [O] Last modified time */ -BOOL WINAPI IsUrlCacheEntryExpiredW( LPCWSTR url, DWORD dwFlags, FILETIME* pftLastModified ) +BOOL WINAPI IsUrlCacheEntryExpiredW(LPCWSTR url, DWORD dwFlags, FILETIME* pftLastModified) { - urlcache_header *pHeader; - struct hash_entry *pHashEntry; - const entry_header *pEntry; - const entry_url * pUrlEntry; - cache_container *pContainer; - BOOL expired; - - TRACE("(%s, %08x, %p)\n", debugstr_w(url), dwFlags, pftLastModified); - - if (!url || !pftLastModified) - return TRUE; - if (dwFlags) - FIXME("unknown flags 0x%08x\n", dwFlags); - - /* Any error implies that the URL is expired, i.e. not in the cache */ - if (cache_containers_findW(url, &pContainer)) - { - memset(pftLastModified, 0, sizeof(*pftLastModified)); - return TRUE; - } - - if (cache_container_open_index(pContainer, MIN_BLOCK_NO)) - { - memset(pftLastModified, 0, sizeof(*pftLastModified)); - return TRUE; - } - - if (!(pHeader = cache_container_lock_index(pContainer))) - { - memset(pftLastModified, 0, sizeof(*pftLastModified)); - return TRUE; - } - - if (!urlcache_find_hash_entryW(pHeader, url, &pHashEntry)) - { - cache_container_unlock_index(pContainer, pHeader); - memset(pftLastModified, 0, sizeof(*pftLastModified)); - TRACE("entry %s not found!\n", debugstr_w(url)); - return TRUE; - } - - if (!urlcache_find_hash_entryW(pHeader, url, &pHashEntry)) - { - cache_container_unlock_index(pContainer, pHeader); - memset(pftLastModified, 0, sizeof(*pftLastModified)); - TRACE("entry %s not found!\n", debugstr_w(url)); - return TRUE; - } - - pEntry = (const entry_header*)((LPBYTE)pHeader + pHashEntry->offset); - if (pEntry->signature != URL_SIGNATURE) - { - cache_container_unlock_index(pContainer, pHeader); - memset(pftLastModified, 0, sizeof(*pftLastModified)); - FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPCSTR)&pEntry->signature, sizeof(DWORD))); - return TRUE; - } - - pUrlEntry = (const entry_url *)pEntry; - expired = urlcache_entry_is_expired(pUrlEntry, pftLastModified); + char *encoded_url; + BOOL ret;
- cache_container_unlock_index(pContainer, pHeader); + if(!urlcache_encode_url_alloc(url, &encoded_url)) + return FALSE;
- return expired; + ret = IsUrlCacheEntryExpiredA(encoded_url, dwFlags, pftLastModified); + heap_free(encoded_url); + return ret; }
/***********************************************************************