summaryrefslogtreecommitdiff
path: root/source3/printing/printing.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2004-08-31 15:11:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:52:32 -0500
commit278f9467f2079044497e3fd4c5358c280f179e41 (patch)
tree3bbbf315863dacb18e984e851356a8b67832038f /source3/printing/printing.c
parenta79469a27f48bf4353b8f918f96af7e2d7bf384a (diff)
downloadsamba-278f9467f2079044497e3fd4c5358c280f179e41.tar.gz
samba-278f9467f2079044497e3fd4c5358c280f179e41.tar.bz2
samba-278f9467f2079044497e3fd4c5358c280f179e41.zip
r2133: Several fixes:
* BUG 1627: fix for NIS compiles on HPUX 11.00, AIX 4.3 and 5.1 patch from Olaf Flebbe <o.flebbe@science-computing.de>. Will need to watch this one in the build farm. * Fix bug found by rwf@loonybin.net where the PRINT_ATTRIBUTE_PUBLISHED was getting reset by attempts to sanitize the defined attributes (PRINTER_ATTRIBUTE_SAMBA) * Resolve name conflict on DEC OSF-5.1 (inspired by patch from Adharsh Praveen <rprav@india.hp.com>) * Work around parsing error in the print change notify code (not that the alignment bug is still there but reording the entries in the array works around it). * remove duplicate declaration of getprintprocdir from rpcclient. (This used to be commit 7474c6a446037f3ca2546cb6984d800bfc524029)
Diffstat (limited to 'source3/printing/printing.c')
-rw-r--r--source3/printing/printing.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 31cb0faa9b..8b93a43311 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -442,22 +442,30 @@ static void pjob_store_notify(int snum, uint32 jobid, struct printjob *old_data,
if (!old_data)
new_job = True;
- /* Notify the job name first */
-
- if (new_job || !strequal(old_data->jobname, new_data->jobname))
- notify_job_name(snum, jobid, new_data->jobname);
-
/* Job attributes that can't be changed. We only send
notification for these on a new job. */
+ /* ACHTUNG! Due to a bug in Samba's spoolss parsing of the
+ NOTIFY_INFO_DATA buffer, we *have* to send the job submission
+ time first or else we'll end up with potential alignment
+ errors. I don't think the systemtime should be spooled as
+ a string, but this gets us around that error.
+ --jerry (i'll feel dirty for this) */
+
if (new_job) {
notify_job_submitted(snum, jobid, new_data->starttime);
notify_job_username(snum, jobid, new_data->user);
}
+ if (new_job || !strequal(old_data->jobname, new_data->jobname))
+ notify_job_name(snum, jobid, new_data->jobname);
+
/* Job attributes of a new job or attributes that can be
modified. */
+ if (new_job || !strequal(old_data->jobname, new_data->jobname))
+ notify_job_name(snum, jobid, new_data->jobname);
+
if (new_job || old_data->status != new_data->status)
notify_job_status(snum, jobid, map_to_spoolss_status(new_data->status));
@@ -575,26 +583,19 @@ void pjob_delete(int snum, uint32 jobid)
return;
if (!pjob) {
- DEBUG(5, ("pjob_delete(): we were asked to delete nonexistent job %u\n",
+ DEBUG(5, ("pjob_delete: we were asked to delete nonexistent job %u\n",
(unsigned int)jobid));
release_print_db(pdb);
return;
}
- /* Send a notification that a job has been deleted */
-
- job_status = map_to_spoolss_status(pjob->status);
-
/* We must cycle through JOB_STATUS_DELETING and
JOB_STATUS_DELETED for the port monitor to delete the job
properly. */
- job_status |= JOB_STATUS_DELETING;
+ job_status = JOB_STATUS_DELETING|JOB_STATUS_DELETED;
notify_job_status(snum, jobid, job_status);
- job_status |= JOB_STATUS_DELETED;
- notify_job_status(snum, jobid, job_status);
-
/* Remove from printing.tdb */
tdb_delete(pdb->tdb, print_key(jobid));