Module: wine Branch: master Commit: b7df063fde8628d94dca56ece3f830f75d1fcddd URL: http://source.winehq.org/git/wine.git/?a=commit;h=b7df063fde8628d94dca56ece3... Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Jun 1 11:50:11 2011 +0200 winhttp: Don't change the verb if the server response is HTTP_STATUS_REDIRECT_KEEP_VERB. --- dlls/winhttp/request.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c index 8a21ab5..c8eca75 100644 --- a/dlls/winhttp/request.c +++ b/dlls/winhttp/request.c @@ -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 */