Daniel-Constantin Mierla writes:
this is another issue ... the mi commands were
designed to be run from
special processes, created by mi transport modules (mi_fifo,
mi_datagram, etc). There are special init functions called for these
processes. However, with 3.0 xmlrpc module can call these functions but
the module re-uses SIP tcp processes, meaning that what is called in mi
init child function should be called in child init functions.
mi trusted_reload from the same module works fine using both crt and
xmlrpc:
# sip-proxy_ctl mi trusted_reload
#
Jul 1 17:35:35 localhost /usr/sbin/sip-proxy[11824]: INFO: Handling XMLRPC POST from
<127.0.0.1> with body <<?xml version="1.0"
?><methodCall><methodName>mi</methodName><params><param><value><string>trusted_reload</string></value></param></params></methodCall>>
so may the same kind of implementation could be used also for
address_realod.
- call all mi child init functions in mi_rpc
child_init even for SIP
worker process - in the previous commit I added execution only for
PROC_RPC. But then each module exporting mi commands has to be reviewed
to see if there is no overlapping (usually is about opening db
connection, thus make sure it is not opened twice in same process)
- execute per module mi init fuction specific for that module. This will
ensure that mi command become available to xmlrpc module gradually but
safe. It has a drawback of initializing MI specific stuff for each
process even when mi_rpc is not loaded, thus such things are not needed
at runtime
Both options requires check over the mi cmd modules. Right now I think
option 1 is better, because it does not initialize db connections when
not needed, other opinions?
another opinion is: replace permissions module mi commands with rpc
ones.
-- juha