diff options
author | James McCoy <jamessan@debian.org> | 2018-10-19 21:32:49 -0400 |
---|---|---|
committer | James McCoy <jamessan@debian.org> | 2018-10-19 21:32:49 -0400 |
commit | 146bd7c0f403a77e64bda13e86f68bf9ddc76ec1 (patch) | |
tree | 31b263bea0a9662357c55e1ff5f10e3f390b975d /subversion/libsvn_ra_serf | |
parent | e20a507113ff1126aeb4a97b806390ea377fe292 (diff) |
New upstream version 1.10.3
Diffstat (limited to 'subversion/libsvn_ra_serf')
-rw-r--r-- | subversion/libsvn_ra_serf/util.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/subversion/libsvn_ra_serf/util.c b/subversion/libsvn_ra_serf/util.c index 52bf93b..66e06ff 100644 --- a/subversion/libsvn_ra_serf/util.c +++ b/subversion/libsvn_ra_serf/util.c @@ -756,6 +756,9 @@ handle_client_cert_pw(void *data, if (creds) { + /* At this stage we are unable to check whether the password + is correct; if it is incorrect serf will fail to establish + an SSL connection and will return a generic SSL error. */ svn_auth_cred_ssl_client_cert_pw_t *pw_creds; pw_creds = creds; *password = pw_creds->password; @@ -1445,6 +1448,23 @@ handle_response(serf_request_t *request, process_body: + /* A client cert file password was obtained and worked (any HTTP + response means that the SSL connection was established.) */ + if (handler->conn->ssl_client_pw_auth_state) + { + SVN_ERR(svn_auth_save_credentials(handler->conn->ssl_client_pw_auth_state, + handler->session->pool)); + handler->conn->ssl_client_pw_auth_state = NULL; + } + if (handler->conn->ssl_client_auth_state) + { + /* The cert file provider doesn't have any code to save creds so + this is currently a no-op. */ + SVN_ERR(svn_auth_save_credentials(handler->conn->ssl_client_auth_state, + handler->session->pool)); + handler->conn->ssl_client_auth_state = NULL; + } + /* We've been instructed to ignore the body. Drain whatever is present. */ if (handler->discard_body) { |