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