-
- Dmsg1(100, "Job_cmd: %s\n", dir->msg);
- job = get_memory(dir->msglen);
- job_name = get_memory(dir->msglen);
- client_name = get_memory(dir->msglen);
- fileset_name = get_memory(dir->msglen);
- fileset_md5 = get_memory(dir->msglen);
- if (sscanf(dir->msg, jobcmd, &JobId, job, job_name, client_name,
- &JobType, &level, fileset_name, &no_attributes,
- &spool_attributes, fileset_md5, &spool_data) != 11) {
- pm_strcpy(&jcr->errmsg, dir->msg);
- bnet_fsend(dir, BAD_job, jcr->errmsg);
- Emsg1(M_FATAL, 0, _("Bad Job Command from Director: %s\n"), jcr->errmsg);
- free_memory(job);
- free_memory(job_name);
- free_memory(client_name);
- free_memory(fileset_name);
- free_memory(fileset_md5);
- set_jcr_job_status(jcr, JS_ErrorTerminated);
- return 0;
+ Dmsg1(100, "<dird: %s", dir->msg);
+ bstrncpy(spool_size, "0", sizeof(spool_size));
+ stat = sscanf(dir->msg, jobcmd, &JobId, job.c_str(), job_name.c_str(),
+ client_name.c_str(),
+ &JobType, &level, fileset_name.c_str(), &no_attributes,
+ &spool_attributes, fileset_md5.c_str(), &spool_data,
+ &write_part_after_job, &PreferMountedVols, spool_size);
+ if (stat != 14) {
+ /* Try old version */
+ stat = sscanf(dir->msg, oldjobcmd, &JobId, job.c_str(), job_name.c_str(),
+ client_name.c_str(),
+ &JobType, &level, fileset_name.c_str(), &no_attributes,
+ &spool_attributes, fileset_md5.c_str(), &spool_data,
+ &write_part_after_job, &PreferMountedVols);
+ if (stat != 13) {
+ pm_strcpy(jcr->errmsg, dir->msg);
+ dir->fsend(BAD_job, stat, jcr->errmsg);
+ Dmsg1(100, ">dird: %s", dir->msg);
+ set_jcr_job_status(jcr, JS_ErrorTerminated);
+ return false;
+ }