urlmon: Actually send the additional headers returned by IHttpNegotiate::BeginningTransaction.
This commit is contained in:
parent
2a4e41878d
commit
609d91fb0c
|
@ -290,7 +290,8 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
ULONG num = 0;
|
ULONG num = 0;
|
||||||
IServiceProvider *service_provider = 0;
|
IServiceProvider *service_provider = 0;
|
||||||
IHttpNegotiate2 *http_negotiate2 = 0;
|
IHttpNegotiate2 *http_negotiate2 = 0;
|
||||||
LPWSTR host = 0, path = 0, user = 0, pass = 0, addl_header = 0;
|
LPWSTR host = 0, path = 0, user = 0, pass = 0,
|
||||||
|
addl_header = 0, full_header = 0;
|
||||||
BYTE security_id[512];
|
BYTE security_id[512];
|
||||||
LPOLESTR user_agent, accept_mimes[257];
|
LPOLESTR user_agent, accept_mimes[257];
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
@ -435,6 +436,23 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
WARN("IHttpNegotiate_BeginningTransaction failed: %08x\n", hres);
|
WARN("IHttpNegotiate_BeginningTransaction failed: %08x\n", hres);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
else if (addl_header == NULL)
|
||||||
|
{
|
||||||
|
full_header = (LPWSTR)wszHeaders;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
full_header = HeapAlloc(GetProcessHeap(), 0,
|
||||||
|
(lstrlenW(addl_header)+sizeof(wszHeaders))*sizeof(WCHAR));
|
||||||
|
if (!full_header)
|
||||||
|
{
|
||||||
|
WARN("Out of memory\n");
|
||||||
|
hres = E_OUTOFMEMORY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
lstrcpyW(full_header, addl_header);
|
||||||
|
lstrcpyW(&full_header[lstrlenW(addl_header)], wszHeaders);
|
||||||
|
}
|
||||||
|
|
||||||
hres = IServiceProvider_QueryService(service_provider, &IID_IHttpNegotiate2,
|
hres = IServiceProvider_QueryService(service_provider, &IID_IHttpNegotiate2,
|
||||||
&IID_IHttpNegotiate2, (void **)&http_negotiate2);
|
&IID_IHttpNegotiate2, (void **)&http_negotiate2);
|
||||||
|
@ -456,7 +474,7 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
|
|
||||||
/* FIXME: Handle security_id. Native calls undocumented function IsHostInProxyBypassList. */
|
/* FIXME: Handle security_id. Native calls undocumented function IsHostInProxyBypassList. */
|
||||||
|
|
||||||
if (!HttpSendRequestW(This->request, wszHeaders, lstrlenW(wszHeaders), NULL, 0) &&
|
if (!HttpSendRequestW(This->request, full_header, lstrlenW(full_header), NULL, 0) &&
|
||||||
GetLastError() != ERROR_IO_PENDING)
|
GetLastError() != ERROR_IO_PENDING)
|
||||||
{
|
{
|
||||||
WARN("HttpSendRequest failed: %d\n", GetLastError());
|
WARN("HttpSendRequest failed: %d\n", GetLastError());
|
||||||
|
@ -472,6 +490,8 @@ done:
|
||||||
HTTPPROTOCOL_Close(This);
|
HTTPPROTOCOL_Close(This);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (full_header != wszHeaders)
|
||||||
|
HeapFree(GetProcessHeap(), 0, full_header);
|
||||||
CoTaskMemFree(addl_header);
|
CoTaskMemFree(addl_header);
|
||||||
if (http_negotiate2)
|
if (http_negotiate2)
|
||||||
IHttpNegotiate2_Release(http_negotiate2);
|
IHttpNegotiate2_Release(http_negotiate2);
|
||||||
|
|
Loading…
Reference in New Issue