Module: wine Branch: master Commit: b7df063fde8628d94dca56ece3f830f75d1fcddd URL: http://source.winehq.org/git/wine.git/?a=commit;h=b7df063fde8628d94dca56ece3...
Author: Hans Leidekker hans@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 */