| Index: net/third_party/nss/ssl/sslnonce.c
|
| ===================================================================
|
| --- net/third_party/nss/ssl/sslnonce.c (revision 142005)
|
| +++ net/third_party/nss/ssl/sslnonce.c (working copy)
|
| @@ -65,7 +65,7 @@
|
| * invalid_cache has been removed from the cache.
|
| */
|
|
|
| -#define LOCK_CACHE lock_cache()
|
| +#define LOCK_CACHE PZ_Lock(cacheLock)
|
| #define UNLOCK_CACHE PZ_Unlock(cacheLock)
|
|
|
| static SECStatus
|
| @@ -87,8 +87,6 @@
|
| return SECFailure;
|
| }
|
|
|
| -static PRBool LocksInitializedEarly = PR_FALSE;
|
| -
|
| static SECStatus
|
| FreeSessionCacheLocks()
|
| {
|
| @@ -117,30 +115,11 @@
|
| return SECFailure;
|
| }
|
|
|
| -/* free the session cache locks if they were initialized early */
|
| -SECStatus
|
| -ssl_FreeSessionCacheLocks()
|
| -{
|
| - PORT_Assert(PR_TRUE == LocksInitializedEarly);
|
| - if (!LocksInitializedEarly) {
|
| - PORT_SetError(SEC_ERROR_NOT_INITIALIZED);
|
| - return SECFailure;
|
| - }
|
| - FreeSessionCacheLocks();
|
| - LocksInitializedEarly = PR_FALSE;
|
| - return SECSuccess;
|
| -}
|
| -
|
| static PRCallOnceType lockOnce;
|
|
|
| /* free the session cache locks if they were initialized lazily */
|
| static SECStatus ssl_ShutdownLocks(void* appData, void* nssData)
|
| {
|
| - PORT_Assert(PR_FALSE == LocksInitializedEarly);
|
| - if (LocksInitializedEarly) {
|
| - PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
|
| - return SECFailure;
|
| - }
|
| FreeSessionCacheLocks();
|
| memset(&lockOnce, 0, sizeof(lockOnce));
|
| return SECSuccess;
|
| @@ -160,37 +139,15 @@
|
| return PR_SUCCESS;
|
| }
|
|
|
| -/* lazyInit means that the call is not happening during a 1-time
|
| - * initialization function, but rather during dynamic, lazy initialization
|
| - */
|
| +/* the call is happening during dynamic, lazy initialization */
|
| SECStatus
|
| -ssl_InitSessionCacheLocks(PRBool lazyInit)
|
| +ssl_InitSessionCacheLocks()
|
| {
|
| - if (LocksInitializedEarly) {
|
| - return SECSuccess;
|
| - }
|
| -
|
| - if (lazyInit) {
|
| - return (PR_SUCCESS ==
|
| - PR_CallOnce(&lockOnce, initSessionCacheLocksLazily)) ?
|
| - SECSuccess : SECFailure;
|
| - }
|
| -
|
| - if (SECSuccess == InitSessionCacheLocks()) {
|
| - LocksInitializedEarly = PR_TRUE;
|
| - return SECSuccess;
|
| - }
|
| -
|
| - return SECFailure;
|
| + return (PR_SUCCESS ==
|
| + PR_CallOnce(&lockOnce, initSessionCacheLocksLazily)) ?
|
| + SECSuccess : SECFailure;
|
| }
|
|
|
| -static void
|
| -lock_cache(void)
|
| -{
|
| - ssl_InitSessionCacheLocks(PR_TRUE);
|
| - PZ_Lock(cacheLock);
|
| -}
|
| -
|
| /* BEWARE: This function gets called for both client and server SIDs !!
|
| * If the unreferenced sid is not in the cache, Free sid and its contents.
|
| */
|
| @@ -477,6 +434,8 @@
|
| void
|
| SSL_ClearSessionCache(void)
|
| {
|
| + if (!cacheLock)
|
| + return; /* lock was never initialized */
|
| LOCK_CACHE;
|
| while(cache != NULL)
|
| UncacheSID(cache);
|
|
|