Some fixes to the reference-counting in ENGINE code. First, there were a
authorGeoff Thorpe <geoff@openssl.org>
Thu, 26 Apr 2001 23:04:30 +0000 (23:04 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Thu, 26 Apr 2001 23:04:30 +0000 (23:04 +0000)
commitb41f836e5f2ee1bc9ae3bb034473739c921d62bc
tree9a5e5cf3bbabff5d1d407e7de587e3d4880180ad
parent26a81abffc91df66dbdfb5bf76dd0aefe4870dbc
Some fixes to the reference-counting in ENGINE code. First, there were a
few statements equivalent to "ENGINE_add(ENGINE_openssl())" etc. The inner
call to ENGINE_openssl() (as with other functions like it) orphans a
structural reference count. Second, the ENGINE_cleanup() function also
needs to clean up the functional reference counts held internally as the
list of "defaults" (ie. as used when RSA_new() requires an appropriate
ENGINE reference). So ENGINE_clear_defaults() was created and is called
from within ENGINE_cleanup(). Third, some of the existing code was
logically broken in its treatment of reference counts and locking (my
fault), so the necessary bits have been restructured and tidied up.

To test this stuff, compiling with ENGINE_REF_COUNT_DEBUG will cause every
reference count change (both structural and functional) to log a message to
'stderr'. Using with "openssl engine" for example shows this in action
quite well as the 'engine' sub-command cleans up after itself properly.

Also replaced some spaces with tabs.
crypto/engine/engine.h
crypto/engine/engine_all.c
crypto/engine/engine_int.h
crypto/engine/engine_lib.c
crypto/engine/engine_list.c