]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Move closing a print file out of close_normal_file() (it isn't a normal file...
authorJeremy Allison <jra@samba.org>
Thu, 17 Dec 2020 03:49:56 +0000 (19:49 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 17 Dec 2020 18:56:28 +0000 (18:56 +0000)
Streamlines closing print files and allows close_normal_file()
to restrict itself to is_fsa fsps.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/smbd/close.c

index a0d05570da226563049cf946315499f6ff834a7f..f1aca052470d3d6a0e6ed9232289a23ca4a7266c 100644 (file)
@@ -788,13 +788,6 @@ static NTSTATUS close_normal_file(struct smb_request *req, files_struct *fsp,
                fsp->op->global->durable = false;
        }
 
-       if (fsp->print_file) {
-               /* FIXME: return spool errors */
-               print_spool_end(fsp, close_type);
-               file_free(req, fsp);
-               return NT_STATUS_OK;
-       }
-
        /* If this is an old DOS or FCB open and we have multiple opens on
           the same handle we only have one share mode. Ensure we only remove
           the share mode on the last close. */
@@ -1306,6 +1299,11 @@ NTSTATUS close_file(struct smb_request *req, files_struct *fsp,
                status = close_directory(req, fsp, close_type);
        } else if (fsp->fake_file_handle != NULL) {
                status = close_fake_file(req, fsp);
+       } else if (fsp->print_file != NULL) {
+               /* FIXME: return spool errors */
+               print_spool_end(fsp, close_type);
+               file_free(req, fsp);
+               status = NT_STATUS_OK;
        } else {
                status = close_normal_file(req, fsp, close_type);
        }