1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

Make use of the "dir_exists" we already have on directory open.

This commit is contained in:
Jeremy Allison 2011-10-19 14:23:38 -07:00
parent 3712006faa
commit 7b4edc11e3

View File

@ -2631,6 +2631,15 @@ static NTSTATUS open_directory(connection_struct *conn,
/* If directory exists error. If directory doesn't /* If directory exists error. If directory doesn't
* exist create. */ * exist create. */
if (dir_existed) {
status = NT_STATUS_OBJECT_NAME_COLLISION;
DEBUG(2, ("open_directory: unable to create "
"%s. Error was %s\n",
smb_fname_str_dbg(smb_dname),
nt_errstr(status)));
return status;
}
status = mkdir_internal(conn, smb_dname, status = mkdir_internal(conn, smb_dname,
file_attributes); file_attributes);
@ -2651,18 +2660,29 @@ static NTSTATUS open_directory(connection_struct *conn,
* exist create. * exist create.
*/ */
status = mkdir_internal(conn, smb_dname, if (dir_existed) {
status = NT_STATUS_OK;
info = FILE_WAS_OPENED;
} else {
status = mkdir_internal(conn, smb_dname,
file_attributes); file_attributes);
if (NT_STATUS_IS_OK(status)) { if (NT_STATUS_IS_OK(status)) {
info = FILE_WAS_CREATED; info = FILE_WAS_CREATED;
} else {
/* Cope with create race. */
if (!NT_STATUS_EQUAL(status,
NT_STATUS_OBJECT_NAME_COLLISION)) {
DEBUG(2, ("open_directory: unable to create "
"%s. Error was %s\n",
smb_fname_str_dbg(smb_dname),
nt_errstr(status)));
return status;
}
info = FILE_WAS_OPENED;
}
} }
if (NT_STATUS_EQUAL(status,
NT_STATUS_OBJECT_NAME_COLLISION)) {
info = FILE_WAS_OPENED;
status = NT_STATUS_OK;
}
break; break;
case FILE_SUPERSEDE: case FILE_SUPERSEDE: