From cd52456ea10d8716172dbacda5673ec8188c32ae Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Thu, 30 Oct 2014 17:18:47 +0000 Subject: [PATCH] res_pjsip: incorrect qualify statistics after disabling for contact When removing the qualify_frequency from an AoR or a contact the statistics shown when issuing "pjsip show aors" from the CLI are incorrect. This patch deletes the contact's status object from sorcery, disassociating it from the contact, if the qualify_freqency is removed from configuration. ASTERISK-24462 #close Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/4116/ ........ Merged revisions 426755 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 426757 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426761 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_pjsip/pjsip_options.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index 150f43feae..300f851ef1 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -85,6 +85,19 @@ static struct ast_sip_contact_status *find_or_create_contact_status(const struct return status; } +static void delete_contact_status(const struct ast_sip_contact *contact) +{ + struct ast_sip_contact_status *status = ast_sorcery_retrieve_by_id( + ast_sip_get_sorcery(), CONTACT_STATUS, ast_sorcery_object_get_id(contact)); + + if (!status) { + return; + } + + ast_sorcery_delete(ast_sip_get_sorcery(), status); + ao2_ref(status, -1); +} + /*! * \internal * \brief Update an ast_sip_contact_status's elements. @@ -470,6 +483,8 @@ static void qualify_and_schedule(struct ast_sip_contact *contact) } schedule_qualify(contact); + } else { + delete_contact_status(contact); } }