Jacek Caban : wininet: Store security flags in server_t.

Alexandre Julliard julliard at winehq.org
Fri May 25 10:52:49 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri May 25 16:34:43 2012 +0200

wininet: Store security flags in server_t.

---

 dlls/wininet/http.c          |    4 ++--
 dlls/wininet/internet.h      |    2 ++
 dlls/wininet/netconnection.c |    3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index d8b3d1c..1392fb8 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -266,6 +266,7 @@ static server_t *get_server(const WCHAR *name, INTERNET_PORT port)
             server->addr_len = 0;
             server->ref = 1;
             server->port = port;
+            server->security_flags = 0;
             list_init(&server->conn_pool);
             server->name = heap_strdupW(name);
             if(server->name) {
@@ -1997,10 +1998,9 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
             return ERROR_INSUFFICIENT_BUFFER;
 
         *size = sizeof(DWORD);
-        flags = 0;
+        flags = req->netconn ? req->netconn->security_flags : req->security_flags | req->server->security_flags;
         if (req->hdr.dwFlags & INTERNET_FLAG_SECURE)
             flags |= SECURITY_FLAG_SECURE;
-        flags |= req->security_flags;
         if(req->netconn) {
             int bits = NETCON_GetCipherStrength(req->netconn);
             if (bits >= 128)
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index 38d6275..bf11e6d 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -63,6 +63,8 @@ typedef struct {
     LONG ref;
     DWORD64 keep_until;
 
+    DWORD security_flags;
+
     struct list entry;
     struct list conn_pool;
 } server_t;
diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index 4d3e13f..f799dbd 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -511,7 +511,7 @@ DWORD create_netconn(BOOL useSSL, server_t *server, DWORD security_flags, DWORD
 
     netconn->useSSL = useSSL;
     netconn->socketFD = -1;
-    netconn->security_flags = security_flags;
+    netconn->security_flags = security_flags | server->security_flags;
     list_init(&netconn->pool_entry);
 
     assert(server->addr_len);
@@ -729,6 +729,7 @@ DWORD NETCON_secure_connect(netconn_t *connection)
     }
 
     connection->ssl_s = ssl_s;
+    connection->server->security_flags = connection->security_flags;
     return ERROR_SUCCESS;
 
 fail:




More information about the wine-cvs mailing list