Piotr Caban : wininet: Combine certificate errors in HTTP_OpenConnection.

Alexandre Julliard julliard at winehq.org
Wed May 19 10:34:17 CDT 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed May 19 01:50:46 2010 +0200

wininet: Combine certificate errors in HTTP_OpenConnection.

---

 dlls/wininet/http.c          |   11 +++++++++++
 dlls/wininet/netconnection.c |    4 +++-
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 9f96f8a..bd2e574 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -4381,6 +4381,17 @@ static DWORD HTTP_OpenConnection(http_request_t *lpwhr)
         if(res != ERROR_SUCCESS)
         {
             WARN("Couldn't connect securely to host\n");
+
+            if((lpwhr->hdr.ErrorMask&INTERNET_ERROR_MASK_COMBINED_SEC_CERT) && (
+                    res == ERROR_INTERNET_SEC_CERT_DATE_INVALID
+                    || res == ERROR_INTERNET_INVALID_CA
+                    || res == ERROR_INTERNET_SEC_CERT_NO_REV
+                    || res == ERROR_INTERNET_SEC_CERT_REV_FAILED
+                    || res == ERROR_INTERNET_SEC_CERT_REVOKED
+                    || res == ERROR_INTERNET_SEC_INVALID_CERT
+                    || res == ERROR_INTERNET_SEC_CERT_CN_INVALID))
+                res = ERROR_INTERNET_SEC_CERT_ERRORS;
+
             HTTPREQ_CloseConnection(&lpwhr->hdr);
             goto lend;
         }
diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index bb89517..5aa647a 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -331,7 +331,9 @@ static int netconn_secure_verify(int preverify_ok, X509_STORE_CTX *ctx)
             CertFreeCertificateContext(endCert);
             CertCloseStore(store, 0);
         }
-    }
+    } else
+        pSSL_set_ex_data(ssl, error_idx, (void *)ERROR_INTERNET_SEC_CERT_ERRORS);
+
     return ret;
 }
 




More information about the wine-cvs mailing list