Split unlock functions into read/write variants.
Windows SRWLOCK requires you call different functions here. Split
them up in preparation for switching Windows from CRITICAL_SECTION.
BUG=37
Change-Id: I7b5c6a98eab9ae5bb0734b805cfa1ff334918f35
Reviewed-on: https://boringssl-review.googlesource.com/8080
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/ssl_session.c b/ssl/ssl_session.c
index 009693b..8e51a6a 100644
--- a/ssl/ssl_session.c
+++ b/ssl/ssl_session.c
@@ -396,7 +396,7 @@
SSL_SESSION_up_ref(session);
}
/* TODO(davidben): This should probably move it to the front of the list. */
- CRYPTO_MUTEX_unlock(&ssl->initial_ctx->lock);
+ CRYPTO_MUTEX_unlock_read(&ssl->initial_ctx->lock);
if (session != NULL) {
*out_session = session;
@@ -517,7 +517,7 @@
SSL_SESSION *old_session;
CRYPTO_MUTEX_lock_write(&ctx->lock);
if (!lh_SSL_SESSION_insert(ctx->sessions, &old_session, session)) {
- CRYPTO_MUTEX_unlock(&ctx->lock);
+ CRYPTO_MUTEX_unlock_write(&ctx->lock);
SSL_SESSION_free(session);
return 0;
}
@@ -525,7 +525,7 @@
if (old_session != NULL) {
if (old_session == session) {
/* |session| was already in the cache. */
- CRYPTO_MUTEX_unlock(&ctx->lock);
+ CRYPTO_MUTEX_unlock_write(&ctx->lock);
SSL_SESSION_free(old_session);
return 0;
}
@@ -547,7 +547,7 @@
}
}
- CRYPTO_MUTEX_unlock(&ctx->lock);
+ CRYPTO_MUTEX_unlock_write(&ctx->lock);
return 1;
}
@@ -571,7 +571,7 @@
}
if (lock) {
- CRYPTO_MUTEX_unlock(&ctx->lock);
+ CRYPTO_MUTEX_unlock_write(&ctx->lock);
}
if (ret) {
@@ -654,7 +654,7 @@
tp.time = time;
CRYPTO_MUTEX_lock_write(&ctx->lock);
lh_SSL_SESSION_doall_arg(tp.cache, timeout_doall_arg, &tp);
- CRYPTO_MUTEX_unlock(&ctx->lock);
+ CRYPTO_MUTEX_unlock_write(&ctx->lock);
}
int ssl_clear_bad_session(SSL *ssl) {