Greg Geldorp : winhttp/tests: No reconnect on redirect when using proxy.

Alexandre Julliard julliard at winehq.org
Thu Jan 20 12:41:24 CST 2011


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

Author: Greg Geldorp <ggeldorp at vmware.com>
Date:   Thu Jan 20 13:39:05 2011 +0100

winhttp/tests: No reconnect on redirect when using proxy.

---

 dlls/winhttp/tests/notification.c |   42 +++++++++++++++++++++++++++++-------
 1 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/dlls/winhttp/tests/notification.c b/dlls/winhttp/tests/notification.c
index bd6db58..6c9142b 100644
--- a/dlls/winhttp/tests/notification.c
+++ b/dlls/winhttp/tests/notification.c
@@ -46,6 +46,7 @@ struct notification
     unsigned int status;    /* status received */
     int todo;
     int ignore;
+    int skipped_for_proxy;
 };
 
 struct info
@@ -58,6 +59,25 @@ struct info
     unsigned int line;
 };
 
+static BOOL proxy_active(void)
+{
+    WINHTTP_PROXY_INFO proxy_info;
+    BOOL active = FALSE;
+
+    if (WinHttpGetDefaultProxyConfiguration(&proxy_info))
+    {
+        active = (proxy_info.lpszProxy != NULL);
+        if (active)
+            GlobalFree((HGLOBAL) proxy_info.lpszProxy);
+        if (proxy_info.lpszProxyBypass != NULL)
+            GlobalFree((HGLOBAL) proxy_info.lpszProxyBypass);
+    }
+    else
+       active = FALSE;
+
+    return active;
+}
+
 static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buffer, DWORD buflen )
 {
     BOOL status_ok, function_ok;
@@ -88,6 +108,12 @@ static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DW
         }
     }
     if (status_ok) info->index++;
+    if (proxy_active())
+    {
+        while (info->test[info->index].skipped_for_proxy)
+            info->index++;
+    }
+
     if (status & (WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING))
     {
         SetEvent( info->wait );
@@ -222,10 +248,10 @@ static const struct notification redirect_test[] =
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
@@ -299,10 +325,10 @@ static const struct notification async_test[] =
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 },
-    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 },
+    { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
     { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },




More information about the wine-cvs mailing list