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