]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_pubsub: Move where the subscription is stored to after initialized. 95/2295/1
authorJoshua Colp <jcolp@digium.com>
Mon, 15 Feb 2016 18:52:22 +0000 (14:52 -0400)
committerJoshua Colp <jcolp@digium.com>
Thu, 25 Feb 2016 16:04:40 +0000 (10:04 -0600)
A problem arose when testing the AMI subscription listing actions where it
was possible for a subscription that had not been fully initialized to be
listed. This was problematic as the underlying listing code would crash.

This change makes it so the subscription tree is fully set up before it is
added to the list of subscriptions. This ensures that when the listing actions
get the subscription it is valid.

ASTERISK-25738 #close

Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48
(cherry picked from commit 1c4f2a920db173412b38aab785ba22c2cc489f89)

res/res_pjsip_pubsub.c

index fd0119004f1cc8bb3f058efa749bb05ff1fe6e2e..e2978222e8fa2f461b73d15ac95cd7f52ba514c9 100644 (file)
@@ -1241,7 +1241,6 @@ static struct sip_subscription_tree *allocate_subscription_tree(struct ast_sip_e
        sub_tree->endpoint = ao2_bump(endpoint);
        sub_tree->notify_sched_id = -1;
 
-       add_subscription(sub_tree);
        return sub_tree;
 }
 
@@ -1315,6 +1314,8 @@ static struct sip_subscription_tree *create_subscription_tree(const struct ast_s
                sub_tree->is_list = 1;
        }
 
+       add_subscription(sub_tree);
+
        return sub_tree;
 }
 
@@ -1602,6 +1603,8 @@ struct ast_sip_subscription *ast_sip_create_subscription(const struct ast_sip_su
                return NULL;
        }
 
+       add_subscription(sub_tree);
+
        return sub;
 }