msxml3: Clear request headers on Open().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2015-12-23 00:43:15 +03:00 committed by Alexandre Julliard
parent 4ab21edfb1
commit f6bfc309ed
1 changed files with 16 additions and 11 deletions

View File

@ -176,6 +176,19 @@ static void free_response_headers(httprequest *This)
This->raw_respheaders = NULL; This->raw_respheaders = NULL;
} }
static void free_request_headers(httprequest *This)
{
struct httpheader *header, *header2;
LIST_FOR_EACH_ENTRY_SAFE(header, header2, &This->reqheaders, struct httpheader, entry)
{
list_remove(&header->entry);
SysFreeString(header->header);
SysFreeString(header->value);
heap_free(header);
}
}
struct BindStatusCallback struct BindStatusCallback
{ {
IBindStatusCallback IBindStatusCallback_iface; IBindStatusCallback IBindStatusCallback_iface;
@ -888,6 +901,7 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
SysFreeString(This->user); SysFreeString(This->user);
SysFreeString(This->password); SysFreeString(This->password);
This->user = This->password = NULL; This->user = This->password = NULL;
free_request_headers(This);
if (!strcmpiW(method, MethodGetW)) if (!strcmpiW(method, MethodGetW))
{ {
@ -1273,8 +1287,6 @@ static HRESULT httprequest_put_onreadystatechange(httprequest *This, IDispatch *
static void httprequest_release(httprequest *This) static void httprequest_release(httprequest *This)
{ {
struct httpheader *header, *header2;
if (This->site) if (This->site)
IUnknown_Release( This->site ); IUnknown_Release( This->site );
if (This->uri) if (This->uri)
@ -1286,15 +1298,8 @@ static void httprequest_release(httprequest *This)
SysFreeString(This->user); SysFreeString(This->user);
SysFreeString(This->password); SysFreeString(This->password);
/* request headers */ /* cleanup headers lists */
LIST_FOR_EACH_ENTRY_SAFE(header, header2, &This->reqheaders, struct httpheader, entry) free_request_headers(This);
{
list_remove(&header->entry);
SysFreeString(header->header);
SysFreeString(header->value);
heap_free(header);
}
/* response headers */
free_response_headers(This); free_response_headers(This);
SysFreeString(This->status_text); SysFreeString(This->status_text);