diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/printing/printing.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c index 5fd2fc5680..aab4c2f43f 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -845,6 +845,7 @@ int print_job_start(struct current_user *user, int snum, char *jobname) SMB_BIG_UINT dspace, dsize; if (sys_fsusage(path, &dspace, &dsize) == 0 && dspace < 2*(SMB_BIG_UINT)lp_minprintspace(snum)) { + DEBUG(3, ("print_job_start: disk space check failed.\n")); errno = ENOSPC; return -1; } @@ -852,18 +853,23 @@ int print_job_start(struct current_user *user, int snum, char *jobname) /* for autoloaded printers, check that the printcap entry still exists */ if (lp_autoloaded(snum) && !pcap_printername_ok(lp_servicename(snum), NULL)) { + DEBUG(3, ("print_job_start: printer name %s check failed.\n", lp_servicename(snum) )); errno = ENOENT; return -1; } /* Insure the maximum queue size is not violated */ if (lp_maxprintjobs(snum) && print_queue_length(snum) > lp_maxprintjobs(snum)) { + DEBUG(3, ("print_job_start: number of jobs (%d) larger than max printjobs per queue (%d).\n", + print_queue_length(snum), lp_maxprintjobs(snum) )); errno = ENOSPC; return -1; } /* Insure the maximum print jobs in the system is not violated */ if (lp_totalprintjobs() && get_total_jobs(snum) > lp_totalprintjobs()) { + DEBUG(3, ("print_job_start: number of jobs (%d) larger than max printjobs per system (%d).\n", + print_queue_length(snum), lp_totalprintjobs() )); errno = ENOSPC; return -1; } @@ -893,12 +899,16 @@ int print_job_start(struct current_user *user, int snum, char *jobname) tdb_lock_bystring(tdb, "INFO/nextjob"); next_jobid = tdb_fetch_int(tdb, "INFO/nextjob"); - if (next_jobid == -1) next_jobid = 1; + if (next_jobid == -1) + next_jobid = 1; for (jobid = NEXT_JOBID(next_jobid); jobid != next_jobid; jobid = NEXT_JOBID(jobid)) { - if (!print_job_exists(jobid)) break; + if (!print_job_exists(jobid)) + break; } if (jobid == next_jobid || !print_job_store(jobid, &pjob)) { + DEBUG(3, ("print_job_start: either jobid (%d)==next_jobid(%d) or print_job_store failed.\n", + jobid, next_jobid )); jobid = -1; goto fail; } @@ -946,6 +956,8 @@ to open spool file %s.\n", pjob.filename)); } tdb_unlock_bystring(tdb, "INFO/nextjob"); + + DEBUG(3, ("print_job_start: returning fail. Error = %s\n", strerror(errno) )); return -1; } @@ -981,6 +993,7 @@ BOOL print_job_end(int jobid, BOOL normal_close) */ close(pjob->fd); pjob->fd = -1; + DEBUG(3,("print_job_end: failed to stat file for jobid %d\n", jobid )); goto fail; } @@ -998,7 +1011,8 @@ BOOL print_job_end(int jobid, BOOL normal_close) ret = (*(current_printif->job_submit))(snum, pjob); - if (ret) goto fail; + if (ret) + goto fail; /* The print job has been sucessfully handed over to the back-end */ @@ -1007,11 +1021,13 @@ BOOL print_job_end(int jobid, BOOL normal_close) print_job_store(jobid, pjob); /* make sure the database is up to date */ - if (print_cache_expired(snum)) print_queue_update(snum); + if (print_cache_expired(snum)) + print_queue_update(snum); return True; fail: + /* The print job was not succesfully started. Cleanup */ /* Still need to add proper error return propagation! 010122:JRR */ unlink(pjob->filename); |