diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index 697f3a4d2b8cebf7cba96a47ef3dfaf04187a5e9..bbf2128629c5dc3ccdf81b940ba17447786f05a5 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -1208,7 +1208,10 @@ static void subscription_tree_destructor(void *obj)
 
 	destroy_subscriptions(sub_tree->root);
 
-	ast_sip_push_task_synchronous(sub_tree->serializer, subscription_unreference_dialog, sub_tree);
+	if (sub_tree->dlg) {
+		ast_sip_push_task_synchronous(sub_tree->serializer, subscription_unreference_dialog, sub_tree);
+	}
+
 	ast_taskprocessor_unreference(sub_tree->serializer);
 	ast_module_unref(ast_module_info->self);
 }