[SR-Users] Can't start Kamailio with both db_postgres and tls
Daniel-Constantin Mierla
miconda at gmail.com
Wed Jan 7 14:27:59 CET 2015
On 07/01/15 13:32, Øyvind Kolbu wrote:
>
> On 07.01.2015 11:49, Daniel-Constantin Mierla wrote:
>>
>> Searching on google about libpq and tls I found the notes about SSL
>> Initialization at:
>>
>> - http://www.postgresql.org/docs/9.3/static/libpq-ssl.html
>>
>> Scroll down the page.
>>
>> Can you try adding:
>>
>> PQinitSSL(0);
>>
>> inside function:
>>
>> struct pg_con* db_postgres_new_connection(struct db_id* id)
>>
>> in file:
>>
>> modules/db_postgres/km_pg_con.c
>>
>> Before line with:
>>
>> ptr->con = PQsetdbLogin(id->host, ports, ...
>>
>> If works, we have to make that optional via modparam or try auto-detect
>> if ssl is initialized (finding tls is loaded, but some other modules can
>> do it, even when tls is not initialized, so mod param could be a safe
>> way).
>>
> Thanks, just rebuilt git 2f690887b45dbc4, ~4.1.6.
>
> Without tls enabled db_postgres fails with
> ERROR: db_postgres [km_pg_con.c:82]: db_postgres_new_connection():
> could not create SSL context: SSL error code 336236705#012
> ERROR: db_postgres [km_pg_con.c:95]: db_postgres_new_connection():
> cleaning up 0x7f1cfe8ba3c0=pkg_free()
The workaround is only for the case when tls module is loaded. I said it
needs tuning afterwards, if proved to work with tls module, to skip it
otherwise.
>
> When attempting to start with tls enabled I get:
> INFO: tls [tls_mod.c:346]: mod_init(): With ECDH-Support!
> INFO: tls [tls_mod.c:349]: mod_init(): With Diffie Hellman
> ERROR: db_postgres [km_pg_con.c:82]: db_postgres_new_connection():
> could not create SSL context: SSL error code 336236705#012
> ERROR: db_postgres [km_pg_con.c:95]: db_postgres_new_connection():
> cleaning up 0x7f10849d4310=pkg_free()
>
So it complains that the ssl lib is not initialized completely.
Can you try the following:
- edit modules/tls/tls_init.c and add at the beginning of function 'int
init_tls_h(void)':
if(tls_mod_initialized > 0) return 0;
- in modules/db_postgres/km_pg_con.c, add:
#include "../../tls_hooks_init.h"
- then in same file, before the line you added with PQinitSSL(0); add:
init_tls();
Recompile, reinstall, restart and test only with tls module loaded
before the db_postgres.
Let's see the results and then I will make a proper patch if works.
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
More information about the sr-users
mailing list