pjsip_options: Add qualify_timeout processing and eventing
authorGeorge Joseph <george.joseph@fairview5.com>
Sat, 11 Apr 2015 21:56:52 +0000 (15:56 -0600)
committerGeorge Joseph <george.joseph@fairview5.com>
Thu, 16 Apr 2015 14:34:56 +0000 (09:34 -0500)
commit51886c68dc13edf127e64218528b077a5f6de967
treeecb671ae824387d627d39f206b6450ae7dbc32de
parentab6382cafd3ff13dce7916b1770b1bd61fe38f01
pjsip_options: Add qualify_timeout processing and eventing

This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the
discussion at
http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html

The basic issues are that changes in contact status don't cause events to be
emitted for the associated endpoint.  Only dynamic contact add/delete actions
update the endpoint.  Also, the qualify timeout is fixed by pjsip at 32 seconds
which is a long time.

This patch makes use of the new transaction timeout feature in r4585 and
provides the following capabilities...

1.  A new aor/contact variable 'qualify_timeout' has been added that allows the
user to specify the maximum time in milliseconds to wait for a response to an
OPTIONS message.  The default is 3000ms.  When the timer expires, the contact is
marked unavailable.

2.  Contact status changes are now propagated up to the endpoint as follows...
When any contact is 'Available', the endpoint is marked as 'Reachable'.  When
all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'.  The
existing endpoint events are generated appropriately.

ASTERISK-24863 #close

Change-Id: Id0ce0528e58014da1324856ea537e7765466044a
Tested-by: Dmitriy Serov
Tested-by: George Joseph <george.joseph@fairview5.com>
CHANGES
configs/samples/pjsip.conf.sample
contrib/ast-db-manage/config/versions/461d7d691209_add_pjsip_qualify_timeout.py [new file with mode: 0644]
include/asterisk/endpoints.h
include/asterisk/res_pjsip.h
main/endpoints.c
res/res_pjsip.c
res/res_pjsip/location.c
res/res_pjsip/pjsip_configuration.c
res/res_pjsip/pjsip_options.c