Piotr Caban : urlmon: Added IWinInetHttpInfo_{QueryOption, QueryInfo} implementation.

Alexandre Julliard julliard at winehq.org
Tue Mar 29 11:43:05 CDT 2011


Module: wine
Branch: master
Commit: 1041f61e68f34fc632ceeb2a2966b4e667a38db8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1041f61e68f34fc632ceeb2a2966b4e667a38db8

Author: Piotr Caban <piotr at 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 = {




More information about the wine-cvs mailing list