diff options
-rw-r--r-- | old-configure.in | 19 | ||||
-rw-r--r-- | security/certverifier/NSSCertDBTrustDomain.cpp | 5 | ||||
-rw-r--r-- | security/manager/ssl/nsNSSComponent.cpp | 11 |
3 files changed, 35 insertions, 0 deletions
diff --git a/old-configure.in b/old-configure.in index d438d9ea36..6c0b80d7b5 100644 --- a/old-configure.in +++ b/old-configure.in @@ -2160,6 +2160,7 @@ MOZ_SERVICES_HEALTHREPORT=1 MOZ_SERVICES_SYNC=1 MOZ_USERINFO=1 NSS_DISABLE_DBM= +NSS_SQLSTORE= MOZ_MAILNEWS= MOZ_MAILNEWS_OAUTH2= MOZ_LDAP_XPCOM= @@ -2717,6 +2718,24 @@ fi AC_SUBST(NSS_DISABLE_DBM) dnl ========================================================= +dnl = NSS SQL storage format +dnl ========================================================= +MOZ_ARG_ENABLE_BOOL(nss-sqlstore, +[ --enable-nss-sqlstore Enable the us of SQL storage for NSS], + NSS_SQLSTORE=1, + NSS_SQLSTORE=) + +if test -n "$NSS_DISABLE_DBM" -a -z "$NSS_SQLSTORE"; then + AC_MSG_ERROR([DBM storage support is required if not using NSS SQL storage]) +fi + +if test -n "$NSS_SQLSTORE"; then + AC_DEFINE(NSS_SQLSTORE) +fi + +AC_SUBST(NSS_SQLSTORE) + +dnl ========================================================= dnl = Don't fold mailnews related comps into libXUL dnl ========================================================= MOZ_ARG_ENABLE_BOOL(incomplete-external-linkage, diff --git a/security/certverifier/NSSCertDBTrustDomain.cpp b/security/certverifier/NSSCertDBTrustDomain.cpp index 5e89c24849..2793fad486 100644 --- a/security/certverifier/NSSCertDBTrustDomain.cpp +++ b/security/certverifier/NSSCertDBTrustDomain.cpp @@ -1102,7 +1102,12 @@ InitializeNSS(const nsACString& dir, bool readOnly, bool loadPKCS11Modules) flags |= NSS_INIT_NOMODDB; } nsAutoCString dbTypeAndDirectory; +#ifdef NSS_SQLSTORE + // Not strictly necessary with current NSS versions, but can't hurt to be explicit. + dbTypeAndDirectory.Append("sql:"); +#else dbTypeAndDirectory.Append("dbm:"); +#endif dbTypeAndDirectory.Append(dir); return ::NSS_Initialize(dbTypeAndDirectory.get(), "", "", SECMOD_DB, flags); } diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp index dfff59da98..d505b8abae 100644 --- a/security/manager/ssl/nsNSSComponent.cpp +++ b/security/manager/ssl/nsNSSComponent.cpp @@ -12,6 +12,9 @@ #include "SharedSSLState.h" #include "cert.h" #include "certdb.h" +#ifdef NSS_SQLSTORE +#include "mozStorageCID.h" +#endif #include "mozilla/ArrayUtils.h" #include "mozilla/Casting.h" #include "mozilla/Preferences.h" @@ -1970,6 +1973,14 @@ nsNSSComponent::Init() return NS_ERROR_NOT_SAME_THREAD; } +#ifdef NSS_SQLSTORE + // To avoid an sqlite3_config race in NSS init, we require the storage service to get initialized first. + nsCOMPtr<nsISupports> storageService = do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); + if (!storageService) { + return NS_ERROR_NOT_AVAILABLE; + } +#endif + nsresult rv = NS_OK; MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("Beginning NSS initialization\n")); |