Module: wine Branch: master Commit: 1041f61e68f34fc632ceeb2a2966b4e667a38db8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1041f61e68f34fc632ceeb2a29...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Mar 28 23:38:16 2011 +0200
urlmon: Added IWinInetHttpInfo_{QueryOption,QueryInfo} implementation.
---
dlls/urlmon/ftp.c | 20 ++++++++++++++++---- dlls/urlmon/http.c | 23 +++++++++++++++++++---- 2 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c index c9d43b8..04cf49c 100644 --- a/dlls/urlmon/ftp.c +++ b/dlls/urlmon/ftp.c @@ -384,16 +384,28 @@ static HRESULT WINAPI HttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD dwOpti void *pBuffer, DWORD *pcbBuffer) { FtpProtocol *This = impl_from_IWinInetHttpInfo(iface); - FIXME("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); - return E_NOTIMPL; + TRACE("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); + + if(!This->base.request) + return E_FAIL; + + if(!InternetQueryOptionW(This->base.request, dwOption, pBuffer, pcbBuffer)) + return S_FALSE; + return S_OK; }
static HRESULT WINAPI HttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD dwOption, void *pBuffer, DWORD *pcbBuffer, DWORD *pdwFlags, DWORD *pdwReserved) { FtpProtocol *This = impl_from_IWinInetHttpInfo(iface); - FIXME("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); - return E_NOTIMPL; + TRACE("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); + + if(!This->base.request) + return E_FAIL; + + if(!HttpQueryInfoW(This->base.request, dwOption, pBuffer, pcbBuffer, pdwFlags)) + return S_FALSE; + return S_OK; }
static const IWinInetHttpInfoVtbl WinInetHttpInfoVtbl = { diff --git a/dlls/urlmon/http.c b/dlls/urlmon/http.c index 23f6e69..846c790 100644 --- a/dlls/urlmon/http.c +++ b/dlls/urlmon/http.c @@ -836,16 +836,31 @@ static HRESULT WINAPI HttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD dwOpti void *pBuffer, DWORD *pcbBuffer) { HttpProtocol *This = impl_from_IWinInetHttpInfo(iface); - FIXME("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); - return E_NOTIMPL; + TRACE("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); + + if(!This->base.request) + return E_FAIL; + + if(!InternetQueryOptionW(This->base.request, dwOption, pBuffer, pcbBuffer)) + return S_FALSE; + return S_OK; }
static HRESULT WINAPI HttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD dwOption, void *pBuffer, DWORD *pcbBuffer, DWORD *pdwFlags, DWORD *pdwReserved) { HttpProtocol *This = impl_from_IWinInetHttpInfo(iface); - FIXME("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); - return E_NOTIMPL; + TRACE("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); + + if(!This->base.request) + return E_FAIL; + + if(!HttpQueryInfoW(This->base.request, dwOption, pBuffer, pcbBuffer, pdwFlags)) { + if(pBuffer) + memset(pBuffer, 0, *pcbBuffer); + return S_OK; + } + return S_OK; }
static const IWinInetHttpInfoVtbl WinInetHttpInfoVtbl = {