[sr-dev] rfc: things about RPC/MI child initialization

Daniel-Constantin Mierla miconda at gmail.com
Tue Sep 6 11:05:54 CEST 2011


Hello,

currently there is a known issue with the processes initialized for 
processing MI commands when using event_route[tm:local-request]. Since 
the child init function for other modules is not executed for such 
processes, functions from various modules (especially with database 
interaction) cannot be executed, for example: calling acc_db_request() 
for BYE generated through MI dlg_end_dlg.

On another hand, MI functions cannot be called properly via RPC (through 
mi_rpc module) when using XMLRPC. The reason is that XMLRPC is handled 
by SIP workers, which do not execute mi_child_init function.

These may render obsolete the mi_init_child function, since it should be 
merged in the normal child_init function. Moreover, the rank PROC_RPC 
applies to SIP worker processes when XMLRPC module is loaded. Thus I 
think some RPC commands don't work properly over XMLRPC (cc-ed Jan and 
Andrei for more comments here). It should be also like a RPC flag per 
process than only type

One option to solve is to add a new parameter to child init function, 
flags, where to tell whether the process is going to handle MI/RPC 
requests. Based on that, call mi_child_init if still requires. PROC_RPC 
needs to stay also as rank for specially forked processes.

This change will require to touch all modules, and they are a lot, so 
maybe somebody here finds other solution.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla -- http://www.asipto.com
Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
http://linkedin.com/in/miconda -- http://twitter.com/miconda




More information about the sr-dev mailing list