Jacek Caban : urlmon: Correctly handle INET_E_USE_DEFAULT_SETTING returned from GetBindString( BINDIND_ACCEPT_MIMES).

Alexandre Julliard julliard at winehq.org
Wed Sep 8 13:32:13 CDT 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Sep  8 14:56:08 2010 +0200

urlmon: Correctly handle INET_E_USE_DEFAULT_SETTING returned from GetBindString(BINDIND_ACCEPT_MIMES).

---

 dlls/urlmon/http.c |   13 +++++++++++--
 include/urlmon.idl |    1 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/urlmon/http.c b/dlls/urlmon/http.c
index fc0b8c4..04ca232 100644
--- a/dlls/urlmon/http.c
+++ b/dlls/urlmon/http.c
@@ -76,6 +76,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
     IHttpNegotiate2 *http_negotiate2 = NULL;
     LPWSTR host, user, pass, path;
     LPOLESTR accept_mimes[257];
+    const WCHAR **accept_types;
     URL_COMPONENTSW url_comp;
     BYTE security_id[512];
     DWORD len = 0;
@@ -113,7 +114,15 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
 
     num = sizeof(accept_mimes)/sizeof(accept_mimes[0])-1;
     hres = IInternetBindInfo_GetBindString(bind_info, BINDSTRING_ACCEPT_MIMES, accept_mimes, num, &num);
-    if(hres != S_OK) {
+    if(hres == INET_E_USE_DEFAULT_SETTING) {
+        static const WCHAR default_accept_mimeW[] = {'*','/','*',0};
+        static const WCHAR *default_accept_mimes[] = {default_accept_mimeW, NULL};
+
+        accept_types = default_accept_mimes;
+        num = 0;
+    }else if(hres == S_OK) {
+        accept_types = (const WCHAR**)accept_mimes;
+    }else {
         WARN("GetBindString BINDSTRING_ACCEPT_MIMES failed: %08x\n", hres);
         return INET_E_NO_VALID_MEDIA;
     }
@@ -130,7 +139,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
     This->base.request = HttpOpenRequestW(This->base.connection,
             This->base.bind_info.dwBindVerb < BINDVERB_CUSTOM
                 ? wszBindVerb[This->base.bind_info.dwBindVerb] : This->base.bind_info.szCustomVerb,
-            path, NULL, NULL, (LPCWSTR *)accept_mimes, request_flags, (DWORD_PTR)&This->base);
+            path, NULL, NULL, accept_types, request_flags, (DWORD_PTR)&This->base);
     heap_free(path);
     while(num--)
         CoTaskMemFree(accept_mimes[num]);
diff --git a/include/urlmon.idl b/include/urlmon.idl
index c1d3bec..ac856e8 100644
--- a/include/urlmon.idl
+++ b/include/urlmon.idl
@@ -1897,6 +1897,7 @@ cpp_quote("#define INET_E_SECURITY_PROBLEM          _HRESULT_TYPEDEF_(0x800C000E
 cpp_quote("#define INET_E_CANNOT_LOAD_DATA          _HRESULT_TYPEDEF_(0x800C000F)")
 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800C0010)")
 cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(0x800C0011)")
+cpp_quote("#define INET_E_USE_DEFAULT_SETTING       _HRESULT_TYPEDEF_(0x800C0012L)")
 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN       _HRESULT_TYPEDEF_(0x800C0013)")
 cpp_quote("#define INET_E_REDIRECT_FAILED           _HRESULT_TYPEDEF_(0x800C0014)")
 cpp_quote("#define INET_E_REDIRECT_TO_DIR           _HRESULT_TYPEDEF_(0x800C0015)")




More information about the wine-cvs mailing list