Module: wine Branch: stable Commit: bff1891f57bc5d4ef1eb7fde80e43ed6598ffe16 URL: https://source.winehq.org/git/wine.git/?a=commit;h=bff1891f57bc5d4ef1eb7fde8...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Sep 8 17:47:27 2017 +0300
msxml3/httpreq: Support HEAD request.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 79f11f228216f6b6fa6aaf02704a86592b44aba3) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
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 55339e1..d9f3f98 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 55ea8b6..a744b95 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(); }