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().
parent
eb6dc02b
Please register or sign in to comment