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

Alexandre Julliard julliard at winehq.org
Wed Jun 1 12:11:07 CDT 2011


Module: wine
Branch: master
Commit: b7df063fde8628d94dca56ece3f830f75d1fcddd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b7df063fde8628d94dca56ece3f830f75d1fcddd

Author: Hans Leidekker <hans at 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 */




More information about the wine-cvs mailing list