| Index: net/third_party/nss/patches/cachelocks.patch
|
| diff --git a/net/third_party/nss/patches/cachelocks.patch b/net/third_party/nss/patches/cachelocks.patch
|
| deleted file mode 100644
|
| index 9ba646b8a697da64840bf731a58415908217df1a..0000000000000000000000000000000000000000
|
| --- a/net/third_party/nss/patches/cachelocks.patch
|
| +++ /dev/null
|
| @@ -1,239 +0,0 @@
|
| -diff --git a/lib/ssl/ssl3con.c b/lib/ssl/ssl3con.c
|
| -index 1394542..d7d186a 100644
|
| ---- a/lib/ssl/ssl3con.c
|
| -+++ b/lib/ssl/ssl3con.c
|
| -@@ -6049,7 +6049,6 @@ SSL3_ShutdownServerCache(void)
|
| - }
|
| -
|
| - PZ_Unlock(symWrapKeysLock);
|
| -- ssl_FreeSessionCacheLocks();
|
| - return SECSuccess;
|
| - }
|
| -
|
| -@@ -6102,7 +6101,7 @@ getWrappingKey(sslSocket *ss,
|
| -
|
| - pSymWrapKey = &symWrapKeys[symWrapMechIndex].symWrapKey[exchKeyType];
|
| -
|
| -- ssl_InitSessionCacheLocks(PR_TRUE);
|
| -+ ssl_InitSessionCacheLocks();
|
| -
|
| - PZ_Lock(symWrapKeysLock);
|
| -
|
| -diff --git a/lib/ssl/sslimpl.h b/lib/ssl/sslimpl.h
|
| -index d47eb28..c0e3a0b 100644
|
| ---- a/lib/ssl/sslimpl.h
|
| -+++ b/lib/ssl/sslimpl.h
|
| -@@ -2029,9 +2029,7 @@ extern SECStatus ssl_InitSymWrapKeysLock(void);
|
| -
|
| - extern SECStatus ssl_FreeSymWrapKeysLock(void);
|
| -
|
| --extern SECStatus ssl_InitSessionCacheLocks(PRBool lazyInit);
|
| --
|
| --extern SECStatus ssl_FreeSessionCacheLocks(void);
|
| -+extern SECStatus ssl_InitSessionCacheLocks(void);
|
| -
|
| - /**************** DTLS-specific functions **************/
|
| - extern void dtls_FreeQueuedMessage(DTLSQueuedMessage *msg);
|
| -diff --git a/lib/ssl/sslnonce.c b/lib/ssl/sslnonce.c
|
| -index 4804cb8..99591cc 100644
|
| ---- a/lib/ssl/sslnonce.c
|
| -+++ b/lib/ssl/sslnonce.c
|
| -@@ -35,93 +35,55 @@ static PZLock *cacheLock = NULL;
|
| - #define LOCK_CACHE lock_cache()
|
| - #define UNLOCK_CACHE PZ_Unlock(cacheLock)
|
| -
|
| --static SECStatus
|
| --ssl_InitClientSessionCacheLock(void)
|
| --{
|
| -- cacheLock = PZ_NewLock(nssILockCache);
|
| -- return cacheLock ? SECSuccess : SECFailure;
|
| --}
|
| --
|
| --static SECStatus
|
| --ssl_FreeClientSessionCacheLock(void)
|
| --{
|
| -- if (cacheLock) {
|
| -- PZ_DestroyLock(cacheLock);
|
| -- cacheLock = NULL;
|
| -- return SECSuccess;
|
| -- }
|
| -- PORT_SetError(SEC_ERROR_NOT_INITIALIZED);
|
| -- return SECFailure;
|
| --}
|
| --
|
| --static PRBool LocksInitializedEarly = PR_FALSE;
|
| -+static PRCallOnceType lockOnce;
|
| -
|
| -+/* FreeSessionCacheLocks is a callback from NSS_RegisterShutdown which destroys
|
| -+ * the session cache locks on shutdown and resets them to their initial
|
| -+ * state. */
|
| - static SECStatus
|
| --FreeSessionCacheLocks()
|
| -+FreeSessionCacheLocks(void *appData, void *nssData)
|
| - {
|
| -- SECStatus rv1, rv2;
|
| -- rv1 = ssl_FreeSymWrapKeysLock();
|
| -- rv2 = ssl_FreeClientSessionCacheLock();
|
| -- if ((SECSuccess == rv1) && (SECSuccess == rv2)) {
|
| -- return SECSuccess;
|
| -- }
|
| -- return SECFailure;
|
| --}
|
| -+ static const PRCallOnceType pristineCallOnce;
|
| -+ SECStatus rv;
|
| -
|
| --static SECStatus
|
| --InitSessionCacheLocks(void)
|
| --{
|
| -- SECStatus rv1, rv2;
|
| -- PRErrorCode rc;
|
| -- rv1 = ssl_InitSymWrapKeysLock();
|
| -- rv2 = ssl_InitClientSessionCacheLock();
|
| -- if ((SECSuccess == rv1) && (SECSuccess == rv2)) {
|
| -- return SECSuccess;
|
| -- }
|
| -- rc = PORT_GetError();
|
| -- FreeSessionCacheLocks();
|
| -- PORT_SetError(rc);
|
| -- return SECFailure;
|
| --}
|
| --
|
| --/* free the session cache locks if they were initialized early */
|
| --SECStatus
|
| --ssl_FreeSessionCacheLocks()
|
| --{
|
| -- PORT_Assert(PR_TRUE == LocksInitializedEarly);
|
| -- if (!LocksInitializedEarly) {
|
| -+ if (!cacheLock) {
|
| - PORT_SetError(SEC_ERROR_NOT_INITIALIZED);
|
| - return SECFailure;
|
| - }
|
| -- FreeSessionCacheLocks();
|
| -- LocksInitializedEarly = PR_FALSE;
|
| -- return SECSuccess;
|
| --}
|
| -
|
| --static PRCallOnceType lockOnce;
|
| -+ PZ_DestroyLock(cacheLock);
|
| -+ cacheLock = NULL;
|
| -
|
| --/* 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;
|
| -+ rv = ssl_FreeSymWrapKeysLock();
|
| -+ if (rv != SECSuccess) {
|
| -+ return rv;
|
| - }
|
| -- FreeSessionCacheLocks();
|
| -- memset(&lockOnce, 0, sizeof(lockOnce));
|
| -+
|
| -+ lockOnce = pristineCallOnce;
|
| - return SECSuccess;
|
| - }
|
| -
|
| -+/* InitSessionCacheLocks is called, protected by lockOnce, to create the
|
| -+ * session cache locks. */
|
| - static PRStatus
|
| --initSessionCacheLocksLazily(void)
|
| -+InitSessionCacheLocks(void)
|
| - {
|
| -- SECStatus rv = InitSessionCacheLocks();
|
| -- if (SECSuccess != rv) {
|
| -+ SECStatus rv;
|
| -+
|
| -+ cacheLock = PZ_NewLock(nssILockCache);
|
| -+ if (cacheLock == NULL) {
|
| - return PR_FAILURE;
|
| - }
|
| -- rv = NSS_RegisterShutdown(ssl_ShutdownLocks, NULL);
|
| -+ rv = ssl_InitSymWrapKeysLock();
|
| -+ if (rv != SECSuccess) {
|
| -+ PRErrorCode error = PORT_GetError();
|
| -+ PZ_DestroyLock(cacheLock);
|
| -+ cacheLock = NULL;
|
| -+ PORT_SetError(error);
|
| -+ return PR_FAILURE;
|
| -+ }
|
| -+
|
| -+ rv = NSS_RegisterShutdown(FreeSessionCacheLocks, NULL);
|
| - PORT_Assert(SECSuccess == rv);
|
| - if (SECSuccess != rv) {
|
| - return PR_FAILURE;
|
| -@@ -129,35 +91,19 @@ initSessionCacheLocksLazily(void)
|
| - return PR_SUCCESS;
|
| - }
|
| -
|
| --/* lazyInit means that the call is not happening during a 1-time
|
| -- * initialization function, but rather 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, InitSessionCacheLocks))
|
| -+ ? SECSuccess
|
| -+ : SECFailure;
|
| - }
|
| -
|
| - static void
|
| - lock_cache(void)
|
| - {
|
| -- ssl_InitSessionCacheLocks(PR_TRUE);
|
| -+ ssl_InitSessionCacheLocks();
|
| - PZ_Lock(cacheLock);
|
| - }
|
| -
|
| -diff --git a/lib/ssl/sslsnce.c b/lib/ssl/sslsnce.c
|
| -index da1f93f..e3f749e 100644
|
| ---- a/lib/ssl/sslsnce.c
|
| -+++ b/lib/ssl/sslsnce.c
|
| -@@ -1344,7 +1344,7 @@ SSL_ConfigServerSessionIDCache(int maxCacheEntries,
|
| - PRUint32 ssl3_timeout,
|
| - const char *directory)
|
| - {
|
| -- ssl_InitSessionCacheLocks(PR_FALSE);
|
| -+ ssl_InitSessionCacheLocks();
|
| - return SSL_ConfigServerSessionIDCacheInstance(&globalCache,
|
| - maxCacheEntries, ssl2_timeout, ssl3_timeout, directory, PR_FALSE);
|
| - }
|
| -@@ -1458,7 +1458,7 @@ SSL_ConfigServerSessionIDCacheWithOpt(
|
| - PRBool enableMPCache)
|
| - {
|
| - if (!enableMPCache) {
|
| -- ssl_InitSessionCacheLocks(PR_FALSE);
|
| -+ ssl_InitSessionCacheLocks();
|
| - return ssl_ConfigServerSessionIDCacheInstanceWithOpt(&globalCache,
|
| - ssl2_timeout, ssl3_timeout, directory, PR_FALSE,
|
| - maxCacheEntries, maxCertCacheEntries, maxSrvNameCacheEntries);
|
| -@@ -1502,7 +1502,7 @@ SSL_InheritMPServerSIDCacheInstance(cacheDesc *cache, const char *envString)
|
| - return SECSuccess; /* already done. */
|
| - }
|
| -
|
| -- ssl_InitSessionCacheLocks(PR_FALSE);
|
| -+ ssl_InitSessionCacheLocks();
|
| -
|
| - ssl_sid_lookup = ServerSessionIDLookup;
|
| - ssl_sid_cache = ServerSessionIDCache;
|
|
|