From 044a08ae7b2bf1217cb3a84e2d7543fed0f438de Mon Sep 17 00:00:00 2001
From: Alexei Gradinari <alex2grad@gmail.com>
Date: Mon, 6 Jun 2022 18:21:24 -0400
Subject: [PATCH] res_pjsip_pubsub: delete scheduled notification on RLS update

If there is scheduled notification, we must delete it
to avoid using destroyed subscriptions.

ASTERISK-29906

Change-Id: I1c644e5e15a8fe43eed8e4f9112f113cbf87a40f
---
 res/res_pjsip_pubsub.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index a0fe2736be..d0f3717dbd 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -4061,6 +4061,12 @@ static void pubsub_on_rx_refresh(pjsip_evsub *evsub, pjsip_rx_data *rdata,
 						new_root->version = old_root->version;
 						sub_tree->root = new_root;
 						sub_tree->generate_initial_notify = 1;
+
+						/* If there is scheduled notification need to delete it to avoid use old subscriptions */
+						if (sub_tree->notify_sched_id > -1) {
+							AST_SCHED_DEL_UNREF(sched, sub_tree->notify_sched_id, ao2_ref(sub_tree, -1));
+							sub_tree->send_scheduled_notify = 0;
+						}
 						shutdown_subscriptions(old_root);
 						destroy_subscriptions(old_root);
 					} else {
-- 
GitLab