[asterisk-dev] PJSIP module reload

Steve Murphy murf at parsetree.com
Thu Jun 1 07:37:46 CDT 2017


Hello--

I'm looking at another upgrade done to chan_sip, and how we might do the
same for pjsip.

Namely, an upgrade was performed on chan_sip, to skip the "poking" of all
the phones when a reload of chan_sip was done via the CLI. The reason for
this: the GUI we have would trigger reloads whenever the configuration was
changed. Since we are multi-tenanted, this could potentially mean several
reloads per second at times. Since chan_sip scheduled these OPTIONS
packets, it could results in several thousands being scheduled many times,
resulting in a temporarily overloaded channel driver.

I see similar code in chan_pjsip... (in the module load function):

        /* since endpoints are loaded before the channel driver their device
           states get set to 'invalid', so they need to be updated */
        if ((endpoints = ast_sip_get_endpoints())) {
                ao2_callback(endpoints, OBJ_NODATA, update_devstate, NULL);
                ao2_ref(endpoints, -1);
        }

Wrapping this in an "if" would be trivial, but what are the conditions?
"pjsip reload" as a CLI command is aliased in
configs/samples/cli_aliases.conf via:

pjsip reload=module reload res_pjsip.so res_pjsip_authenticator_digest.so
res_pjsip_endpoint_identifier_ip.so res_pjsip_mwi.so res_pjsip_notify.so
res_pjsip_outbound_publish.so res_pjsip_publish_asterisk.so
res_pjsip_outbound_registration.so

​The chan_sip conditional we used was based on the ​difference between
being called by the CLI, or via a module load. There is no such difference
as far as I can tell in the chan_pjsip world. Is there any way to get
equivalent results in the pjsip world? And, really, do I need to worry
about the same "piling on" happening in the pjsip environment?

murf

-- 

Steve Murphy
✉  murf at parsetree dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20170601/87b2ec48/attachment.html>


More information about the asterisk-dev mailing list