diff options
author | Jeremy Allison <jra@samba.org> | 2003-02-11 02:24:51 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-02-11 02:24:51 +0000 |
commit | e6ac820d81e632997726aab5b1937f71138f490a (patch) | |
tree | 1e530a4aa5557853e11f621cc7a20aa8ec18e00f /source3/smbd/close.c | |
parent | 70f1fcb87b2b5080e086bbf4555bdbda0635a709 (diff) | |
download | samba-e6ac820d81e632997726aab5b1937f71138f490a.tar.gz samba-e6ac820d81e632997726aab5b1937f71138f490a.tar.xz samba-e6ac820d81e632997726aab5b1937f71138f490a.zip |
Fix delete on close semantics to match W2K. I (think:-) I understand it now :-).
Thanks to Nir Livni <nirl@cyber-ark.com> for giving me the test case to
track it down.
Jeremy.
(This used to be commit 41894489e82a474f4f8f66aa2c7a117ed05b33e1)
Diffstat (limited to 'source3/smbd/close.c')
-rw-r--r-- | source3/smbd/close.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source3/smbd/close.c b/source3/smbd/close.c index b0620febef..4798d62db8 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -145,6 +145,22 @@ static int close_normal_file(files_struct *fsp, BOOL normal_close) */ lock_share_entry_fsp(fsp); + + if (fsp->delete_on_close) { + + /* + * Modify the share mode entry for all files open + * on this device and inode to tell other smbds we have + * changed the delete on close flag. The last closer will delete the file + * if flag is set. + */ + + NTSTATUS status =set_delete_on_close_over_all(fsp, fsp->delete_on_close); + if (NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_OK)) + DEBUG(0,("close_normal_file: failed to change delete on close flag for file %s\n", + fsp->fsp_name )); + } + share_entry_count = del_share_mode(fsp, &share_entry); DEBUG(10,("close_normal_file: share_entry_count = %d for file %s\n", |