res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack
authorAlexei Gradinari <alex2grad@gmail.com>
Mon, 8 Aug 2016 17:53:32 +0000 (13:53 -0400)
committerAlexei Gradinari <alex2grad@gmail.com>
Mon, 8 Aug 2016 18:57:58 +0000 (13:57 -0500)
commit403b63571c53719bc050f4aded696cd933995d24
treef12ba860945a4259979e2bb1d6497faf185304d7
parent9042ad40f2a56d6cfd4117897cbc9943253d4e09
res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack

The PJSIP taskprocessors could be overflowed on startup
if there are many (thousands) realtime endpoints
configured with unsolicited mwi.
The PJSIP stack could be totally unresponsive for a few minutes
after boot completed.

This patch creates a separate PJSIP serializers pool for mwi
and makes unsolicited mwi use serializers from this pool.
This patch also adds 2 new global options to tune taskprocessor
alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'.

This patch also adds new global option 'mwi_disable_initial_unsolicited'
to disable sending unsolicited mwi to all endpoints on startup.
If disabled then unsolicited mwi will start processing
on next endpoint's contact update.

ASTERISK-26230 #close

Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a
CHANGES
configs/samples/pjsip.conf.sample
contrib/ast-db-manage/config/versions/c7a44a5a0851_pjsip_add_global_mwi_options.py [new file with mode: 0644]
include/asterisk/res_pjsip.h
res/res_pjsip.c
res/res_pjsip/config_global.c
res/res_pjsip_mwi.c