Hans Leidekker : winhttp: Make sure to clear response headers from a previous request.

Alexandre Julliard julliard at winehq.org
Tue Mar 5 12:59:18 CST 2013


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Mar  5 12:15:54 2013 +0100

winhttp: Make sure to clear response headers from a previous request.

---

 dlls/winhttp/request.c |   32 ++++++++++++++++----------------
 1 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index c07c613..cd583e7 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -1038,6 +1038,20 @@ static BOOL add_host_header( request_t *request, DWORD modifier )
     return ret;
 }
 
+static void clear_response_headers( request_t *request )
+{
+    unsigned int i;
+
+    for (i = 0; i < request->num_headers; i++)
+    {
+        if (!request->headers[i].field) continue;
+        if (!request->headers[i].value) continue;
+        if (request->headers[i].is_request) continue;
+        delete_header( request, i );
+        i--;
+    }
+}
+
 static BOOL send_request( request_t *request, LPCWSTR headers, DWORD headers_len, LPVOID optional,
                           DWORD optional_len, DWORD total_len, DWORD_PTR context, BOOL async )
 {
@@ -1053,6 +1067,8 @@ static BOOL send_request( request_t *request, LPCWSTR headers, DWORD headers_len
     int bytes_sent;
     DWORD len, i, flags;
 
+    clear_response_headers( request );
+
     flags = WINHTTP_ADDREQ_FLAG_ADD|WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA;
     for (i = 0; i < request->num_accept_types; i++)
     {
@@ -1457,20 +1473,6 @@ static BOOL handle_authorization( request_t *request, DWORD status )
     return FALSE;
 }
 
-static void clear_response_headers( request_t *request )
-{
-    unsigned int i;
-
-    for (i = 0; i < request->num_headers; i++)
-    {
-        if (!request->headers[i].field) continue;
-        if (!request->headers[i].value) continue;
-        if (request->headers[i].is_request) continue;
-        delete_header( request, i );
-        i--;
-    }
-}
-
 #define MAX_REPLY_LEN   1460
 #define INITIAL_HEADER_BUFFER_LEN  512
 
@@ -1897,7 +1899,6 @@ static BOOL receive_response( request_t *request, BOOL async )
 
             if (!(ret = handle_redirect( request, status ))) break;
 
-            clear_response_headers( request );
             send_request( request, NULL, 0, NULL, 0, 0, 0, FALSE ); /* recurse synchronously */
             continue;
         }
@@ -1911,7 +1912,6 @@ static BOOL receive_response( request_t *request, BOOL async )
                 ret = TRUE;
                 break;
             }
-            clear_response_headers( request );
             send_request( request, NULL, 0, NULL, 0, 0, 0, FALSE );
             continue;
         }




More information about the wine-cvs mailing list