summaryrefslogtreecommitdiff
path: root/source/smbd/close.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/smbd/close.c')
-rw-r--r--source/smbd/close.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/source/smbd/close.c b/source/smbd/close.c
index 818b4c70a8..3d3c4cf09e 100644
--- a/source/smbd/close.c
+++ b/source/smbd/close.c
@@ -581,7 +581,7 @@ static NTSTATUS close_normal_file(files_struct *fsp, enum file_close_type close_
}
DEBUG(2,("%s closed file %s (numopen=%d) %s\n",
- conn->server_info->unix_name,fsp->fsp_name,
+ conn->user,fsp->fsp_name,
conn->num_files_open,
nt_errstr(status) ));
@@ -703,6 +703,20 @@ static NTSTATUS close_directory(files_struct *fsp, enum file_close_type close_ty
}
/****************************************************************************
+ Close a 'stat file' opened internally.
+****************************************************************************/
+
+static NTSTATUS close_stat(files_struct *fsp)
+{
+ /*
+ * Do the code common to files and directories.
+ */
+ close_filestruct(fsp);
+ file_free(fsp);
+ return NT_STATUS_OK;
+}
+
+/****************************************************************************
Close a files_struct.
****************************************************************************/
@@ -713,6 +727,8 @@ NTSTATUS close_file(files_struct *fsp, enum file_close_type close_type)
if(fsp->is_directory) {
status = close_directory(fsp, close_type);
+ } else if (fsp->is_stat) {
+ status = close_stat(fsp);
} else if (fsp->fake_file_handle != NULL) {
status = close_fake_file(fsp);
} else {