From 36dd344dca0d19d8fa05f21164d36fa34460d79f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sun, 16 Dec 2001 21:04:10 +0000 Subject: Ensured filetimes set (by name) after close. Ignore errors. This is the correct way to ensure times set in 'pending modtime' and 'time close' are always set correctly. Inspired by patch from Juergen Hasch. Jeremy. --- source/smbd/reply.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'source/smbd/reply.c') diff --git a/source/smbd/reply.c b/source/smbd/reply.c index c2b7fe208d4..1105d8884cd 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -2963,21 +2963,10 @@ int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size, * Close ordinary file. */ int close_err; + pstring file_name; - /* - * If there was a modify time outstanding, - * try and set it here. - */ - if(fsp->pending_modtime) - set_filetime(conn, fsp->fsp_name, fsp->pending_modtime); - - /* - * Now take care of any time sent in the close. - */ - mtime = make_unix_date3(inbuf+smb_vwv1); - - /* try and set the date */ - set_filetime(conn, fsp->fsp_name,mtime); + /* Save the name for time set in close. */ + pstrcpy( file_name, fsp->fsp_name); DEBUG(3,("close fd=%d fnum=%d (numopen=%d)\n", fsp->fd, fsp->fnum, @@ -2994,6 +2983,16 @@ int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size, END_PROFILE(SMBclose); return (UNIXERROR(ERRHRD,ERRgeneral)); } + + /* + * Now take care of any time sent in the close. + */ + + mtime = make_unix_date3(inbuf+smb_vwv1); + + /* try and set the date */ + set_filetime(conn, file_name, mtime); + } END_PROFILE(SMBclose); -- cgit