This changes the "ERR" code to have all access to state (a hash table of
authorGeoff Thorpe <geoff@openssl.org>
Sat, 25 Aug 2001 17:51:59 +0000 (17:51 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Sat, 25 Aug 2001 17:51:59 +0000 (17:51 +0000)
commit566bdf2bda44f2414ffc20f0540d703f3280749c
treee233c672dfef3da79355655d0253b8ca5da21ccf
parenteb6dc02b23787b6bb7671ed0f79b25bab7a3f453
This changes the "ERR" code to have all access to state (a hash table of
error strings and a hash table storing per-thread error state) go via an
ERR_FNS function table. The first time an ERR operation occurs, the
implementation that will be used (from then on) is set to the internal
"defaults" implementation if it has not already been set. The actual LHASH
tables are only accessed by this implementation.

This is primarily for modules that can be loaded at run-time and bound into
an application (or a shared-library version of OpenSSL). If the module has
its own statically-linked copy of OpenSSL code - this mechanism allows it
to *not* create and use ERR information in its own linked "ERR" code, but
instead to use and interact with the state stored in the loader
(application or shared library). The loader calls ERR_get_implementation()
and the return value is what the module should use when calling its own
copy of ERR_set_implementation().
crypto/err/err.c
crypto/err/err.h