On Mon, 2021-02-01 at 21:49 +0100, Daniel Gustafsson wrote: > > On 29 Jan 2021, at 19:46, Jacob Champion <pchamp...@vmware.com> wrote: > > I think the bad news is that the static approach will need support for > > ENABLE_THREAD_SAFETY. > > I did some more reading today and noticed that the NSS documentation (and > their > sample code for doing crypto without TLS connections) says to use > NSS_NoDB_Init > to perform a read-only init which don't require a matching close call. Now, > the docs aren't terribly clear and also seems to have gone offline from MDN, > and skimming the code isn't entirelt self-explanatory, so I may well have > missed something. The v24 patchset posted changes to this and at least passes > tests with decent performance so it seems worth investigating.
Nice! Not having to close helps quite a bit. (Looks like thread safety for NSS_Init was added in 3.13, so we have an absolute version floor.) > > (It looks like the NSS implementation of pgtls_close() needs some thread > > support too?) > > Storing the context in conn would probably be better? Agreed. > > The good(?) news is that I don't understand why OpenSSL's > > implementation of cryptohash doesn't _also_ need the thread-safety > > code. (Shouldn't we need to call CRYPTO_set_locking_callback() et al > > before using any of its cryptohash implementation?) So maybe we can > > implement the same global setup/teardown API for OpenSSL too and not > > have to one-off it for NSS... > > No idea here, wouldn't that impact pgcrypto as well in that case? If pgcrypto is backend-only then I don't think it should need multithreading protection; is that right? --Jacob