diff options
author | Jeremy Allison <jra@samba.org> | 2004-02-24 00:05:49 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2004-02-24 00:05:49 +0000 |
commit | bf6eb83a3851278668b0f7883113ad3836a65c23 (patch) | |
tree | 8a91d2d2f1987e05f130607692c201cda2a838e8 /source3/smbd | |
parent | 61eedb268bad8cf0e605f25a8362f1bd1705dfe7 (diff) | |
download | samba-bf6eb83a3851278668b0f7883113ad3836a65c23.tar.gz samba-bf6eb83a3851278668b0f7883113ad3836a65c23.tar.bz2 samba-bf6eb83a3851278668b0f7883113ad3836a65c23.zip |
Added NTrename SMB (0xA5) - how did we miss this.... ?
Jeremy.
(This used to be commit d236372876918be2a886a89383cf843b82d4c8db)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/nttrans.c | 50 | ||||
-rw-r--r-- | source3/smbd/process.c | 2 |
2 files changed, 51 insertions, 1 deletions
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index 075b549a10..954d90b4ad 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -1490,6 +1490,56 @@ int reply_ntcancel(connection_struct *conn, } /**************************************************************************** + Reply to a NT rename request. +****************************************************************************/ + +int reply_ntrename(connection_struct *conn, + char *inbuf,char *outbuf,int length,int bufsize) +{ + int outsize = 0; + pstring name; + pstring newname; + char *p; + NTSTATUS status; + + START_PROFILE(SMBntrename); + + p = smb_buf(inbuf) + 1; + p += srvstr_get_path(inbuf, name, p, sizeof(name), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntrename); + return ERROR_NT(status); + } + p++; + p += srvstr_get_path(inbuf, newname, p, sizeof(newname), STR_TERMINATE,&status); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntrename); + return ERROR_NT(status); + } + + RESOLVE_DFSPATH(name, conn, inbuf, outbuf); + RESOLVE_DFSPATH(newname, conn, inbuf, outbuf); + + DEBUG(3,("reply_ntrename : %s -> %s\n",name,newname)); + + status = rename_internals(conn, name, newname, False); + if (!NT_STATUS_IS_OK(status)) { + END_PROFILE(SMBntrename); + return ERROR_NT(status); + } + + /* + * Win2k needs a changenotify request response before it will + * update after a rename.. + */ + process_pending_change_notify_queue((time_t)0); + outsize = set_message(outbuf,0,0,True); + + END_PROFILE(SMBntrename); + return(outsize); +} + +/**************************************************************************** Reply to an unsolicited SMBNTtranss - just ignore it! ****************************************************************************/ diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 5206dc70f8..718d1bb67b 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -521,7 +521,7 @@ static const struct smb_message_struct { /* 0xa2 */ { "SMBntcreateX", reply_ntcreate_and_X, AS_USER | CAN_IPC | QUEUE_IN_OPLOCK }, /* 0xa3 */ { NULL, NULL, 0 }, /* 0xa4 */ { "SMBntcancel", reply_ntcancel, 0 }, -/* 0xa5 */ { NULL, NULL, 0 }, +/* 0xa5 */ { "SMBntrename", reply_ntrename, AS_USER | NEED_WRITE | QUEUE_IN_OPLOCK }, /* 0xa6 */ { NULL, NULL, 0 }, /* 0xa7 */ { NULL, NULL, 0 }, /* 0xa8 */ { NULL, NULL, 0 }, |