- bnet_fsend(sd, jobcmd, jcr->JobId, jcr->Job, jcr->job->hdr.name,
- jcr->client->hdr.name, jcr->JobType, jcr->JobLevel,
- jcr->fileset->hdr.name, !jcr->pool->catalog_files,
- jcr->job->SpoolAttributes, jcr->fileset->MD5, jcr->spool_data,
- jcr->write_part_after_job, jcr->job->PreferMountedVolumes);
- Dmsg1(100, ">stored: %s\n", sd->msg);
- unbash_spaces(jcr->job->hdr.name);
- unbash_spaces(jcr->client->hdr.name);
- unbash_spaces(jcr->fileset->hdr.name);
+ /* If rescheduling, cancel the previous incarnation of this job
+ * with the SD, which might be waiting on the FD connection.
+ * If we do not cancel it the SD will not accept a new connection
+ * for the same jobid.
+ */
+ if (jcr->reschedule_count) {
+ sd->fsend("cancel Job=%s\n", jcr->Job);
+ while (sd->recv() >= 0)
+ { }
+ }
+ sd->fsend(jobcmd, edit_int64(jcr->JobId, ed1), jcr->Job,
+ job_name.c_str(), client_name.c_str(),
+ jcr->getJobType(), jcr->getJobLevel(),
+ fileset_name.c_str(), !jcr->pool->catalog_files,
+ jcr->job->SpoolAttributes, jcr->fileset->MD5, jcr->spool_data,
+ jcr->write_part_after_job, jcr->job->PreferMountedVolumes,
+ edit_int64(jcr->spool_size, ed2), jcr->rerunning,
+ jcr->VolSessionId, jcr->VolSessionTime);
+ Dmsg1(100, ">stored: %s", sd->msg);