diff options
Diffstat (limited to 'lib/vtls/axtls.c')
-rw-r--r-- | lib/vtls/axtls.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/vtls/axtls.c b/lib/vtls/axtls.c index 0afcfaa58..df6ae9562 100644 --- a/lib/vtls/axtls.c +++ b/lib/vtls/axtls.c @@ -259,14 +259,18 @@ static CURLcode connect_prep(struct connectdata *conn, int sockindex) */ /* In axTLS, handshaking happens inside ssl_client_new. */ + Curl_ssl_sessionid_lock(conn); if(!Curl_ssl_getsessionid(conn, (void **) &ssl_sessionid, &ssl_idsize)) { /* we got a session id, use it! */ infof (data, "SSL re-using session ID\n"); ssl = ssl_client_new(ssl_ctx, conn->sock[sockindex], ssl_sessionid, (uint8_t)ssl_idsize); + Curl_ssl_sessionid_unlock(); } - else + else { + Curl_ssl_sessionid_unlock(); ssl = ssl_client_new(ssl_ctx, conn->sock[sockindex], NULL, 0); + } conn->ssl[sockindex].ssl = ssl; return CURLE_OK; @@ -381,9 +385,11 @@ static CURLcode connect_finish(struct connectdata *conn, int sockindex) /* Put our freshly minted SSL session in cache */ ssl_idsize = ssl_get_session_id_size(ssl); ssl_sessionid = ssl_get_session_id(ssl); + Curl_ssl_sessionid_lock(conn); if(Curl_ssl_addsessionid(conn, (void *) ssl_sessionid, ssl_idsize) != CURLE_OK) infof (data, "failed to add session to cache\n"); + Curl_ssl_sessionid_unlock(conn); return CURLE_OK; } |