mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
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:
@@ -1408,6 +1408,18 @@
|
||||
It only limits contacts added through external interaction, such as
|
||||
registration.
|
||||
</para>
|
||||
<note><para>The <replaceable>rewrite_contact</replaceable> option
|
||||
registers the source address as the contact address to help with
|
||||
NAT and reusing connection oriented transports such as TCP and
|
||||
TLS. Unfortunately, refreshing a registration may register a
|
||||
different contact address and exceed
|
||||
<replaceable>max_contacts</replaceable>. The
|
||||
<replaceable>remove_existing</replaceable> option can help by
|
||||
removing the soonest to expire contact(s) over
|
||||
<replaceable>max_contacts</replaceable> which is likely the
|
||||
old <replaceable>rewrite_contact</replaceable> contact source
|
||||
address being refreshed.
|
||||
</para></note>
|
||||
<note><para>This should be set to <literal>1</literal> and
|
||||
<replaceable>remove_existing</replaceable> set to <literal>yes</literal> if you
|
||||
wish to stick with the older <literal>chan_sip</literal> behaviour.
|
||||
@@ -1417,15 +1429,29 @@
|
||||
<configOption name="minimum_expiration" default="60">
|
||||
<synopsis>Minimum keep alive time for an AoR</synopsis>
|
||||
<description><para>
|
||||
Minimum time to keep a peer with an explict expiration. Time in seconds.
|
||||
Minimum time to keep a peer with an explicit expiration. Time in seconds.
|
||||
</para></description>
|
||||
</configOption>
|
||||
<configOption name="remove_existing" default="no">
|
||||
<synopsis>Determines whether new contacts replace existing ones.</synopsis>
|
||||
<description><para>
|
||||
On receiving a new registration to the AoR should it remove
|
||||
the existing contact that was registered against it?
|
||||
On receiving a new registration to the AoR should it remove enough
|
||||
existing contacts not added or updated by the registration to
|
||||
satisfy <replaceable>max_contacts</replaceable>? Any removed
|
||||
contacts will expire the soonest.
|
||||
</para>
|
||||
<note><para>The <replaceable>rewrite_contact</replaceable> option
|
||||
registers the source address as the contact address to help with
|
||||
NAT and reusing connection oriented transports such as TCP and
|
||||
TLS. Unfortunately, refreshing a registration may register a
|
||||
different contact address and exceed
|
||||
<replaceable>max_contacts</replaceable>. The
|
||||
<replaceable>remove_existing</replaceable> option can help by
|
||||
removing the soonest to expire contact(s) over
|
||||
<replaceable>max_contacts</replaceable> which is likely the
|
||||
old <replaceable>rewrite_contact</replaceable> contact source
|
||||
address being refreshed.
|
||||
</para></note>
|
||||
<note><para>This should be set to <literal>yes</literal> and
|
||||
<replaceable>max_contacts</replaceable> set to <literal>1</literal> if you
|
||||
wish to stick with the older <literal>chan_sip</literal> behaviour.
|
||||
|
Reference in New Issue
Block a user