From 364175b359f018c8641359440fa07b0ea567b045 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 31 May 2018 10:35:48 -0700 Subject: [PATCH] s3: smbd: printing: Re-implement delete-on-close semantics for print files missing since 3.5.x. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13457 Signed-off-by: Jeremy Allison Reviewed-by: Andreas Schneider Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Fri Jun 1 20:32:03 CEST 2018 on sn-devel-144 --- selftest/knownfail.d/smbspool | 1 - source3/printing/printspoolss.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) delete mode 100644 selftest/knownfail.d/smbspool diff --git a/selftest/knownfail.d/smbspool b/selftest/knownfail.d/smbspool deleted file mode 100644 index a61fc4dca5d..00000000000 --- a/selftest/knownfail.d/smbspool +++ /dev/null @@ -1 +0,0 @@ -^samba3.blackbox.smbspool.delete.on.close diff --git a/source3/printing/printspoolss.c b/source3/printing/printspoolss.c index 60002020351..9d565de120a 100644 --- a/source3/printing/printspoolss.c +++ b/source3/printing/printspoolss.c @@ -309,6 +309,23 @@ void print_spool_end(files_struct *fsp, enum file_close_type close_type) WERROR werr; struct dcerpc_binding_handle *b = NULL; + if (fsp->fh->private_options & + NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE) { + int ret; + + /* + * Job was requested to be cancelled by setting + * delete on close so truncate the job file. + * print_job_end() which is called from + * _spoolss_EndDocPrinter() will take + * care of deleting it for us. + */ + ret = ftruncate(fsp->fh->fd, 0); + if (ret == -1) { + DBG_ERR("ftruncate failed: %s\n", strerror(errno)); + } + } + b = fsp->conn->spoolss_pipe->binding_handle; switch (close_type) { -- 2.34.1