summaryrefslogtreecommitdiffstats
path: root/source/smbd/close.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1999-01-21 02:41:42 +0000
committerJeremy Allison <jra@samba.org>1999-01-21 02:41:42 +0000
commit1cea3dc96fb09a6016f46aad86b79af4f1600c85 (patch)
tree342a8ed11cb56e4ddd52fb5bb8790cd177bbc537 /source/smbd/close.c
parent9a274b4e760c974f438616dbceb44420ea3ef19d (diff)
downloadsamba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.tar.gz
samba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.tar.xz
samba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.zip
Added code to let NT do a 'delete on close' request on an open
directory handle. WinCenter (multi-user NT system) is doing this. This code still needs testing.... Jeremy.
Diffstat (limited to 'source/smbd/close.c')
-rw-r--r--source/smbd/close.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/source/smbd/close.c b/source/smbd/close.c
index 708571bae6b..52e6a4940bc 100644
--- a/source/smbd/close.c
+++ b/source/smbd/close.c
@@ -177,11 +177,30 @@ with error %s\n", fsp->fsp_name, strerror(errno) ));
Close a directory opened by an NT SMB call.
****************************************************************************/
-void close_directory(files_struct *fsp)
+void close_directory(files_struct *fsp, BOOL normal_close)
{
remove_pending_change_notify_requests_by_fid(fsp);
/*
+ * NT can set delete_on_close of the last open
+ * reference to a directory also.
+ */
+
+ if (normal_close && fsp->directory_delete_on_close) {
+ BOOL ok = rmdir_internals(fsp->conn, fsp->fsp_name);
+ DEBUG(5,("close_directory: %s. Delete on close was set - deleting directory %s.\n",
+ fsp->fsp_name, ok ? "succeeded" : "failed" ));
+
+ /*
+ * Ensure we remove any change notify requests that would
+ * now fail as the directory has been deleted.
+ */
+
+ if(ok)
+ remove_pending_change_notify_requests_by_filename(fsp);
+ }
+
+ /*
* Do the code common to files and directories.
*/
close_filestruct(fsp);