Fix error returns
authorVolker Lendecke <vl@sernet.de>
Sun, 2 Dec 2007 12:34:59 +0000 (13:34 +0100)
committerVolker Lendecke <vl@sernet.de>
Wed, 5 Dec 2007 12:45:12 +0000 (13:45 +0100)
source/smbd/nttrans.c

index c9bc3f45a0f3b8e1418de6f5b95bd14ec0e51716..739bf01ef91e55211142f0c2248b37d9fbcda1e5 100644 (file)
@@ -992,7 +992,12 @@ void reply_ntcreate_and_X(connection_struct *conn, struct smb_request *req)
                        END_PROFILE(SMBntcreateX);
                        return;
                }
-               reply_nterror(req, status);
+               if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
+                       reply_botherror(req, status, ERRDOS, ERRfilexists);
+               }
+               else {
+                       reply_nterror(req, status);
+               }
                END_PROFILE(SMBntcreateX);
                return;
        }
@@ -1422,7 +1427,12 @@ static void call_nt_transact_create(connection_struct *conn,
                        /* We have re-scheduled this call, no error. */
                        return;
                }
-               reply_nterror(req, status);
+               if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
+                       reply_botherror(req, status, ERRDOS, ERRfilexists);
+               }
+               else {
+                       reply_nterror(req, status);
+               }
                return;
        }