summaryrefslogtreecommitdiff
path: root/res/res_pjsip/location.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2017-08-15 11:14:20 -0500
committerRichard Mudgett <rmudgett@digium.com>2017-08-15 11:22:35 -0500
commitd0f6892dff6bf8d8ccf958c44c7be24bb1e1a6c5 (patch)
treeb0ebdead08fa02846735a68c0c860f06db0e8f15 /res/res_pjsip/location.c
parent4e11c2192fafaa572b8a984eef2212addf907f78 (diff)
res_pjsip: Fix prune_on_boot to remove only contacts for the host.
* Check that the contact's reg_server matches the host's name before deleting any prune_on_boot contacts. We don't want to delete reliable transport contacts made with other servers if the ps_contacts database table is shared with other servers. Thanks to Ross Beer for pointing out that the original prune logic would delete reliable transport contacts from other servers. ASTERISK-27147 Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0
Diffstat (limited to 'res/res_pjsip/location.c')
-rw-r--r--res/res_pjsip/location.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c
index 557aeb6b9..2273273e3 100644
--- a/res/res_pjsip/location.c
+++ b/res/res_pjsip/location.c
@@ -460,7 +460,10 @@ static int prune_boot_contacts_cb(void *obj, void *arg, int flags)
{
struct ast_sip_contact *contact = obj;
- if (contact->prune_on_boot) {
+ if (contact->prune_on_boot
+ && !strcmp(contact->reg_server, ast_config_AST_SYSTEM_NAME ?: "")) {
+ ast_verb(3, "Removed contact '%s' from AOR '%s' due to system boot\n",
+ contact->uri, contact->aor);
ast_sip_location_delete_contact(contact);
}