Merge pull request #1927 from kamailio/rfuchs/openssl-locking-fix
[sip-router] / src / modules / tls / utils / openssl_mutex_shared / README.md
1 # OpenSSL Shared Mutex #
2
3 This is a shared library required as a short term workaround for using Kamailio
4 with OpenSSL (libssl) v1.1. It has to be pre-loaded before starting Kamailio.
5
6 In v1.1, libssl does not allow setting custom locking functions, using internally
7 pthread mutexes and rwlocks, but they are not initialized with process shared
8 option (PTHREAD_PROCESS_SHARED), which can result in blocking Kamailio worker
9 processes.
10
11 ## Installation ##
12
13 By default, it is installed when the tls module is installed.
14
15 It can be installed manually, in this folder execute:
16
17 ```
18 make
19 make install
20 ```
21
22 It is installed at the same place where Kamailio deploys the directory with
23 modules.
24
25 For example, when installing from sources on a 64b system, the location is:
26
27 ```
28 /usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so
29 ```
30
31 For Debian packing, the location is like:
32
33 ```
34 /usr/lib/x86_64-linux-gnu/kamailio/openssl_mutex_shared/openssl_mutex_shared.so
35 ```
36
37 ## Usage ##
38
39 Use LD_PRELOAD to tell the linker to preload this shared object before starting
40 Kamailio.
41
42 Example, when Kamailio was installed from sources:
43
44 ```
45 LD_PRELOAD=/usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so; \
46   /usr/local/sbin/kamailio -f /usr/local/etc/kamailio/kamailio.cfg
47 ```
48
49 If using systemd, add to service file:
50
51 ```
52 Environment='LD_PRELOAD=/usr/local/lib64/kamailio/openssl_mutex_shared/openssl_mutex_shared.so'
53 ```