res_pjsip_registrar: Remove unavailable contacts if exceeds max_contacts

The behavior of max_contacts and remove_existing are connected.  If
remove_existing is enabled, the soonest expiring contacts are removed.
This may occur when there is an unavailable contact.  Similarly,
when remove_existing is not enabled, registrations from good
endpoints are rejected in favor of retaining unavailable contacts.

This commit adds a new AOR option remove_unavailable, and the effect
of this setting will depend on remove_existing.  If remove_existing
is set to no, we will still remove unavailable contacts when they
exceed max_contacts, if there are any. If remove_existing is set to
yes, we will prioritize the removal of unavailable contacts before
those that are expiring soonest.

ASTERISK-29525

Change-Id: Ia2711b08f2b4d1177411b1be23e970d7fdff5784
This commit is contained in:
Joseph Nadiv
2021-07-21 17:36:03 -04:00
committed by Friendly Automation
parent 0aac38c0ac
commit 47cb177baf
7 changed files with 187 additions and 9 deletions

View File

@@ -389,6 +389,8 @@ struct ast_sip_aor {
double qualify_timeout;
/*! Voicemail extension to set in Message-Account */
char *voicemail_extension;
/*! Whether to remove unavailable contacts over max_contacts at all or first if remove_existing is enabled */
unsigned int remove_unavailable;
};
/*!