Changelog
+* Fix faxq sleepq concurrency problem (Bug 745) (26 Apr 2006)
* Fix runSchedule() concurrency problem (Bug 745) (26 Apr 2006)
* Fix some of the error paths in the setReadyToRun jobcontrol
pipe, fork, and exec calls (BUG 745) (25 Apr 2006)
* where the queue file is updated.
*/
for (JobIter sleepiter(sleepq); sleepiter.notDone(); sleepiter++) {
- if (sleepiter.job().dest != job.dest || sleepiter.job().state != FaxRequest::state_sleeping)
+ Job& j(sleepiter.job());
+ if (j.state != FaxRequest::state_pending
+ || j.state != FaxRequest::state_sleeping)
+ break;
+ if (j.dest != job.dest || j.state != FaxRequest::state_sleeping)
continue;
- sleepiter.job().stopTTSTimer();
- sleepiter.job().tts = now;
- sleepiter.job().state = FaxRequest::state_ready;
- sleepiter.job().remove();
- setReadyToRun(sleepiter.job(), jobCtrlWait);
+ j.stopTTSTimer();
+ j.tts = now;
+ j.state = FaxRequest::state_ready;
+ j.remove();
+ setReadyToRun(j, jobCtrlWait);
}
Job* bjob = &job; // Last batched Job