Module: wine Branch: master Commit: f2aef4cbb9f63ebd3e89dd9f1cafa47e66cbd70a URL: http://source.winehq.org/git/wine.git/?a=commit;h=f2aef4cbb9f63ebd3e89dd9f1c...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jan 31 18:18:11 2008 +0100
urlmon: Correctly handle BINDF_NEEDFILE flag in http protocol.
---
dlls/urlmon/http.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/http.c b/dlls/urlmon/http.c index 3056feb..712800d 100644 --- a/dlls/urlmon/http.c +++ b/dlls/urlmon/http.c @@ -419,6 +419,8 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
if (This->grfBINDF & BINDF_NOWRITECACHE) request_flags |= INTERNET_FLAG_NO_CACHE_WRITE; + if (This->grfBINDF & BINDF_NEEDFILE) + request_flags |= INTERNET_FLAG_NEED_FILE; This->request = HttpOpenRequestW(This->connect, This->bind_info.dwBindVerb < BINDVERB_CUSTOM ? wszBindVerb[This->bind_info.dwBindVerb] : This->bind_info.szCustomVerb, @@ -656,6 +658,21 @@ static HRESULT WINAPI HttpProtocol_Continue(IInternetProtocol *iface, PROTOCOLDA This->content_length = atoiW(content_length); }
+ if(This->grfBINDF & BINDF_NEEDFILE) { + WCHAR cache_file[MAX_PATH]; + DWORD buflen = sizeof(cache_file); + + if(InternetQueryOptionW(This->request, INTERNET_OPTION_DATAFILE_NAME, + cache_file, &buflen)) + { + IInternetProtocolSink_ReportProgress(This->protocol_sink, + BINDSTATUS_CACHEFILENAMEAVAILABLE, + cache_file); + }else { + FIXME("Could not get cache file\n"); + } + } + This->flags |= FLAG_FIRST_CONTINUE_COMPLETE; }