res_pjsip_registrar.c: Update remove_existing AOR contact handling.

When "rewrite_contact" is enabled, the "max_contacts" count option can
block re-registrations because the source port from the endpoint can be
random.  When the re-registration is blocked, the endpoint may give up
re-registering and require manual intervention.

* The "remove_existing" option now allows a registration to succeed by
displacing any existing contacts that now exceed the "max_contacts" count.
Any removed contacts are the next to expire.  The behaviour change is
beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
than one.  The removed contact is likely the old contact created by
"rewrite_contact" that the device is refreshing.

ASTERISK-27192

Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b
This commit is contained in:
Richard Mudgett
2017-09-20 18:36:15 -05:00
parent 13c1c72401
commit fb19799b62
5 changed files with 198 additions and 21 deletions

View File

@@ -918,7 +918,13 @@
;max_contacts=0 ; Maximum number of contacts that can bind to an AoR (default:
; "0")
;minimum_expiration=60 ; Minimum keep alive time for an AoR (default: "60")
;remove_existing=no ; Determines whether new contacts replace existing ones
;remove_existing=no ; Allow a registration to succeed by displacing any existing
; contacts that now exceed the max_contacts count. Any
; removed contacts are the next to expire. The behaviour is
; beneficial when rewrite_contact is enabled and max_contacts
; is greater than one. The removed contact is likely the old
; contact created by rewrite_contact that the device is
; refreshing.
; (default: "no")
;type= ; Must be of type aor (default: "")
;qualify_frequency=0 ; Interval at which to qualify an AoR (default: "0")
@@ -1157,7 +1163,7 @@
;outbound_auth= ; Authentication object(s) to be used for outbound
; publishes.
; This is a comma-delimited list of auth sections
; This is a comma-delimited list of auth sections
; defined in pjsip.conf used to respond to outbound
; authentication challenges.
; Using the same auth section for inbound and