Plugin *plugin;
int i = 0;
- if (!plugin_list || !jcr || !jcr->plugin_ctx_list) {
+ if (!plugin_list || !jcr || !jcr->plugin_ctx_list || job_canceled(jcr)) {
return; /* Return if no plugins loaded */
}
int rc = bRC_OK;
int i = 0;
- if (!plugin_list || !jcr || !jcr->plugin_ctx_list) {
+ if (!plugin_list || !jcr || !jcr->plugin_ctx_list || job_canceled(jcr)) {
return false; /* Return if no plugins loaded */
}
char *cmd = ff_pkt->top_fname;
struct save_pkt sp;
bEvent event;
+ POOL_MEM fname(PM_FNAME);
+ POOL_MEM link(PM_FNAME);
- if (!plugin_list || !jcr->plugin_ctx_list) {
+ if (!plugin_list || !jcr->plugin_ctx_list || job_canceled(jcr)) {
return 1; /* Return if no plugins loaded */
}
}
jcr->plugin_sp = &sp;
ff_pkt = jcr->ff;
- ff_pkt->fname = sp.fname;
- ff_pkt->link = sp.link;
+ /*
+ * Copy fname and link because save_file() zaps them. This
+ * avoids zaping the plugin's strings.
+ */
+ pm_strcpy(fname, sp.fname);
+ pm_strcpy(link, sp.link);
+ ff_pkt->fname = fname.c_str();
+ ff_pkt->link = link.c_str();
ff_pkt->type = sp.type;
memcpy(&ff_pkt->statp, &sp.statp, sizeof(ff_pkt->statp));
- Dmsg1(dbglvl, "Save_file: file=%s\n", ff_pkt->fname);
+ Dmsg1(dbglvl, "Save_file: file=%s\n", fname.c_str());
save_file(jcr, ff_pkt, true);
bRC rc = plug_func(plugin)->endBackupFile(jcr->plugin_ctx);
+ if (rc == bRC_More || rc == bRC_OK) {
+ accurate_mark_file_as_seen(jcr, fname.c_str());
+ }
if (rc == bRC_More) {
continue;
}
Jmsg0(jcr, M_FATAL, 0, _("Plugin save packet not found.\n"));
return false;
}
+ if (job_canceled(jcr)) {
+ return false;
+ }
if (start) {
index++; /* JobFiles not incremented yet */
int flags;
int rc;
- if (!plugin || !plugin_ctx || !set_cmd_plugin(bfd, jcr)) {
+ if (!plugin || !plugin_ctx || !set_cmd_plugin(bfd, jcr) || job_canceled(jcr)) {
return CF_ERROR;
}
rp.pkt_size = sizeof(rp);
Dmsg0(dbglvl, "plugin list is NULL\n");
return;
}
+ if (job_canceled(jcr)) {
+ return;
+ }
int num = plugin_list->size();