[4/4] winhttp: Store the context passed to WinHttpSendRequest.

Hans Leidekker hans at codeweavers.com
Mon Jan 25 05:27:31 CST 2010


See http://bugs.winehq.org/show_bug.cgi?id=21442
---
 dlls/winhttp/request.c       |    1 +
 dlls/winhttp/tests/winhttp.c |   16 +++++++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index f6c9bce..8bb825c 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -1057,6 +1057,7 @@ static BOOL send_request( request_t *request, LPCWSTR headers, DWORD headers_len
     TRACE("full request: %s\n", debugstr_a(req_ascii));
     len = strlen(req_ascii);
 
+    if (context) request->hdr.context = context;
     send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, NULL, 0 );
 
     ret = netconn_send( &request->netconn, req_ascii, len, 0, &bytes_sent );
diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c
index d9966ea..6be89de 100644
--- a/dlls/winhttp/tests/winhttp.c
+++ b/dlls/winhttp/tests/winhttp.c
@@ -248,8 +248,8 @@ static void test_empty_headers_param(void)
 static void test_SendRequest (void)
 {
     HINTERNET session, request, connection;
-    DWORD header_len, optional_len, total_len;
-    DWORD bytes_rw;
+    DWORD header_len, optional_len, total_len, bytes_rw, size;
+    DWORD_PTR context;
     BOOL ret;
     CHAR buffer[256];
     int i;
@@ -284,9 +284,19 @@ static void test_SendRequest (void)
     }
     ok(request != NULL, "WinHttpOpenrequest failed to open a request, error: %u.\n", GetLastError());
 
-    ret = WinHttpSendRequest(request, content_type, header_len, post_data, optional_len, total_len, 0);
+    context = 0xdeadbeef;
+    ret = WinHttpSetOption(request, WINHTTP_OPTION_CONTEXT_VALUE, &context, sizeof(context));
+    ok(ret, "WinHttpSetOption failed: %u\n", GetLastError());
+
+    context++;
+    ret = WinHttpSendRequest(request, content_type, header_len, post_data, optional_len, total_len, context);
     ok(ret == TRUE, "WinHttpSendRequest failed: %u\n", GetLastError());
 
+    context = 0;
+    ret = WinHttpQueryOption(request, WINHTTP_OPTION_CONTEXT_VALUE, &context, &size);
+    ok(ret, "WinHttpQueryOption failed: %u\n", GetLastError());
+    ok(context == 0xdeadbef0, "expected 0xdeadbef0, got %lx\n", context);
+
     for (i = 3; post_data[i]; i++)
     {
         bytes_rw = -1;
-- 
1.6.3.3




More information about the wine-patches mailing list