On 10/2/10 4:27 PM, IƱaki Baz Castillo wrote:
Hi, according to kamailio-devel-guide child_init
function is just
called for kamailio workers:
16.10.6. Module Child Init Function
This is the function called just after KAMAILIO (OPENSER) forks
its worker processes.
but later it says:
The function gets as parameter the rank of the child process. The rank
is a positive number if it is a worker process and negative for special
processes like timer processes or TCP attendant.
So my question is: should I check the rank parameter in child_init
function just to run the code for real workers?
yes, check it. The phrases use same
term, while in one case should be
'sip worker process' to differentiate from other type of workers.
Beware than from v3.0 you get also rank PROC_INIT, which is called for
main process after all mod_init functions were executed.
Cheers,
Daniel
For example, in modules_k/alias_db module I see:
-----------------------------------------------
static int child_init(int rank)
{
if (rank==PROC_INIT || rank==PROC_MAIN || rank==PROC_TCP_MAIN)
return 0; /* do nothing for the main process */
db_handle = adbf.init(&db_url);
if (!db_handle)
{
LM_ERR("unable to connect database\n");
return -1;
}
return 0;
}
---------------------------------------------
But in modules/db_flatstore I see:
---------------------------------------------
/*
* FIXME: We should check whether just calling km_child_init would really work
* here. This function comes from kamailio and since the core of sip-router is
* based on SER 2.0, the way how child_init is called and values of the rank
* variable could be incompatible with km_child_init function. A solution here
* would be to rewrite km_child_init with ser 2.0 init stuff in mind.
*/
static int child_init(int rank)
{
char* tmp;
unsigned int v;
km_child_init(rank);
if (rank<= 0) {
v = -rank;
} else {
v = rank - PROC_MIN;
}
[...]
---------------------------------------------
I just want child_init to be run for workers, and no por other special
processes. Also I'm writting the module under modules/ so, what should
I do to achieve it?
Thanks a lot.
--
Daniel-Constantin Mierla
http://www.asipto.com