tls: openssl_mutex_shared - note that its code was imported in the core
[sip-router] / src / modules / tls / utils / openssl_mutex_shared / README.md
1 # OpenSSL Shared Mutex #
2
3 **IMPORTANT: the workaround of using this preloaded shared library is no longer
4 needed starting with Kamailio v5.3.0-pre1. The code of this shared library
5 has been included in the core of Kamailio and the same behaviour is now
6 achieved by default.**
7
8 This is a shared library required as a short term workaround for using Kamailio
9 with OpenSSL (libssl) v1.1. It has to be pre-loaded before starting Kamailio.
10
11 In v1.1, libssl does not allow setting custom locking functions, using internally
12 pthread mutexes and rwlocks, but they are not initialized with process shared
13 option (PTHREAD_PROCESS_SHARED), which can result in blocking Kamailio worker
14 processes.
15
16 ## Installation ##
17
18 By default, it is installed when the tls module is installed.
19
20 It can be installed manually, in this folder execute:
21
22 ```
23 make
24 make install
25 ```
26
27 It is installed at the same place where Kamailio deploys the directory with
28 modules.
29
30 For example, when installing from sources on a 64b system, the location is:
31
32 ```
33 /usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so
34 ```
35
36 For Debian packing, the location is like:
37
38 ```
39 /usr/lib/x86_64-linux-gnu/kamailio/openssl_mutex_shared/openssl_mutex_shared.so
40 ```
41
42 Note: there is no dependency on Kamailio source code, this shared object can
43 be compiled and used ouside of Kamailio source tree. It uses only Kamailio's
44 Makefile system to install in the same directory like the other shared objects
45 installed by Kamailio.
46
47 ## Usage ##
48
49 Use LD_PRELOAD to tell the linker to preload this shared object before starting
50 Kamailio.
51
52 Example, when Kamailio was installed from sources:
53
54 ```
55 LD_PRELOAD=/usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so \
56   /usr/local/sbin/kamailio -f /usr/local/etc/kamailio/kamailio.cfg
57 ```
58
59 If using systemd, add to service file:
60
61 ```
62 Environment='LD_PRELOAD=/usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so'
63 ```