[PATCH] msxml3/httpreq: Support HEAD request

Nikolay Sivov nsivov at codeweavers.com
Fri Sep 8 09:47:27 CDT 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---

For https://bugs.winehq.org/show_bug.cgi?id=43668

 dlls/msxml3/httprequest.c   |  2 ++
 dlls/msxml3/tests/httpreq.c | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index 55339e1bad..d9f3f987a8 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -880,6 +880,7 @@ static HRESULT verify_uri(httprequest *This, IUri *uri)
 static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
         VARIANT async, VARIANT user, VARIANT password)
 {
+    static const WCHAR MethodHeadW[] = {'H','E','A','D',0};
     static const WCHAR MethodGetW[] = {'G','E','T',0};
     static const WCHAR MethodPutW[] = {'P','U','T',0};
     static const WCHAR MethodPostW[] = {'P','O','S','T',0};
@@ -915,6 +916,7 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
         This->verb = BINDVERB_POST;
     }
     else if (!strcmpiW(method, MethodDeleteW) ||
+             !strcmpiW(method, MethodHeadW) ||
              !strcmpiW(method, MethodPropFindW))
     {
         This->verb = BINDVERB_CUSTOM;
diff --git a/dlls/msxml3/tests/httpreq.c b/dlls/msxml3/tests/httpreq.c
index 55ea8b6124..a744b951d4 100644
--- a/dlls/msxml3/tests/httpreq.c
+++ b/dlls/msxml3/tests/httpreq.c
@@ -1731,6 +1731,28 @@ static void test_XMLHTTP(void)
     EXPECT_HR(hr, S_OK);
 
     IObjectWithSite_Release(obj_site);
+
+    /* HEAD request */
+    hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL);
+    ok(hr == S_OK, "Failed to reset state change handler, hr %#x.\n", hr);
+
+    test_open(xhr, "HEAD", xmltestA, S_OK);
+
+    V_VT(&varbody) = VT_EMPTY;
+    hr = IXMLHttpRequest_send(xhr, varbody);
+    ok(hr == S_OK, "Failed to send HEAD request, hr %#x.\n", hr);
+
+    str = NULL;
+    hr = IXMLHttpRequest_get_responseText(xhr, &str);
+    ok(hr == S_OK, "Failed to get response text, hr %#x.\n", hr);
+    ok(!*str, "Unexpected text %s.\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
+    ok(hr == S_OK, "Failed to get response headers, hr %#x.\n", hr);
+    ok(str && *str, "Expected response headers.\n");
+    SysFreeString(str);
+
     IXMLHttpRequest_Release(xhr);
     free_bstrs();
 }
-- 
2.14.1




More information about the wine-patches mailing list