Move OpenSSL initialization to a single place, make library usage thread-safe.
authorRussell Bryant <russell@russellbryant.com>
Wed, 8 Jul 2009 15:17:19 +0000 (15:17 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 8 Jul 2009 15:17:19 +0000 (15:17 +0000)
commit0e8c6302240c78d6b86284aaeab25693c1c6d444
tree64d823c71b2b948b5a724c62f8c4d49fc1d7640b
parentacc8bbbaf53e0c6e1ef45e4b6195f8c67621da8a
Move OpenSSL initialization to a single place, make library usage thread-safe.

While doing some reading about OpenSSL, I noticed a couple of things that
needed to be improved with our usage of OpenSSL.

1) We had initialization of the library done in multiple modules.  This has now
   been moved to a core function that gets executed during Asterisk startup.
   We already link OpenSSL into the core for TCP/TLS functionality, so this
   was the most logical place to do it.

2) OpenSSL is not thread-safe by default.  However, making it thread safe is
   very easy.  We just have to provide a couple of callbacks.  One callback
   returns a thread ID.  The other handles locking.  For more information,
   start with the "Is OpenSSL thread-safe?" question on the FAQ page of
   openssl.org.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@205120 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/_private.h
main/asterisk.c
main/ssl.c [new file with mode: 0644]
res/res_crypto.c
res/res_jabber.c