winhttp: Don't change the verb if the server response is HTTP_STATUS_REDIRECT_KEEP_VERB.

This commit is contained in:
Hans Leidekker 2011-06-01 11:50:11 +02:00 committed by Alexandre Julliard
parent a4a4a420f8
commit b7df063fde
1 changed files with 7 additions and 5 deletions

View File

@ -1544,7 +1544,7 @@ end:
return TRUE;
}
static BOOL handle_redirect( request_t *request )
static BOOL handle_redirect( request_t *request, DWORD status )
{
BOOL ret = FALSE;
DWORD size, len;
@ -1626,9 +1626,11 @@ static BOOL handle_redirect( request_t *request )
if ((index = get_header_index( request, attr_content_type, 0, TRUE )) >= 0) delete_header( request, index );
if ((index = get_header_index( request, attr_content_length, 0, TRUE )) >= 0 ) delete_header( request, index );
/* redirects are always GET requests */
heap_free( request->verb );
request->verb = strdupW( getW );
if (status != HTTP_STATUS_REDIRECT_KEEP_VERB)
{
heap_free( request->verb );
request->verb = strdupW( getW );
}
ret = TRUE;
end:
@ -1840,7 +1842,7 @@ static BOOL receive_response( request_t *request, BOOL async )
if (request->hdr.disable_flags & WINHTTP_DISABLE_REDIRECTS) break;
drain_content( request );
if (!(ret = handle_redirect( request ))) break;
if (!(ret = handle_redirect( request, status ))) break;
clear_response_headers( request );
ret = send_request( request, NULL, 0, NULL, 0, 0, 0, FALSE ); /* recurse synchronously */