Juan Lang : wininet: Implement proxy-related per-connection option queries.

Alexandre Julliard julliard at winehq.org
Tue Aug 11 10:47:13 CDT 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Aug 10 15:18:15 2009 -0700

wininet: Implement proxy-related per-connection option queries.

---

 dlls/wininet/internet.c |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 39349d0..e51c964 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -2080,23 +2080,44 @@ DWORD INET_QueryOption(DWORD option, void *buffer, DWORD *size, BOOL unicode)
 
     case INTERNET_OPTION_PER_CONNECTION_OPTION: {
         INTERNET_PER_CONN_OPTION_LISTW *con = buffer;
+        INTERNET_PER_CONN_OPTION_LISTA *conA = buffer;
         DWORD res = ERROR_SUCCESS, i;
+        appinfo_t ai;
+
+        TRACE("Getting global proxy info\n");
+        memset(&ai, 0, sizeof(appinfo_t));
+        INTERNET_ConfigureProxy(&ai);
 
         FIXME("INTERNET_OPTION_PER_CONNECTION_OPTION stub\n");
 
-        if (*size < sizeof(INTERNET_PER_CONN_OPTION_LISTW))
+        if (*size < sizeof(INTERNET_PER_CONN_OPTION_LISTW)) {
+            APPINFO_Destroy(&ai.hdr);
             return ERROR_INSUFFICIENT_BUFFER;
+        }
 
         for (i = 0; i < con->dwOptionCount; i++) {
             INTERNET_PER_CONN_OPTIONW *option = con->pOptions + i;
+            INTERNET_PER_CONN_OPTIONA *optionA = conA->pOptions + i;
 
             switch (option->dwOption) {
             case INTERNET_PER_CONN_FLAGS:
-                option->Value.dwValue = PROXY_TYPE_DIRECT;
+                option->Value.dwValue = ai.dwAccessType;
                 break;
 
             case INTERNET_PER_CONN_PROXY_SERVER:
+                if (unicode)
+                    option->Value.pszValue = heap_strdupW(ai.lpszProxy);
+                else
+                    optionA->Value.pszValue = heap_strdupWtoA(ai.lpszProxy);
+                break;
+
             case INTERNET_PER_CONN_PROXY_BYPASS:
+                if (unicode)
+                    option->Value.pszValue = heap_strdupW(ai.lpszProxyBypass);
+                else
+                    optionA->Value.pszValue = heap_strdupWtoA(ai.lpszProxyBypass);
+                break;
+
             case INTERNET_PER_CONN_AUTOCONFIG_URL:
             case INTERNET_PER_CONN_AUTODISCOVERY_FLAGS:
             case INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL:
@@ -2113,6 +2134,7 @@ DWORD INET_QueryOption(DWORD option, void *buffer, DWORD *size, BOOL unicode)
                 break;
             }
         }
+        APPINFO_Destroy(&ai.hdr);
 
         return res;
     }




More information about the wine-cvs mailing list