diff options
author | Jeremy Allison <jra@samba.org> | 2009-08-21 21:44:21 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2009-08-21 21:44:21 -0700 |
commit | 1af0aa92b3f3467715f6ffbfedf66df1acc0a83c (patch) | |
tree | a151ed8cc04a4bea659b8d11484a197ca3b74b2c /source3/smbd/service.c | |
parent | 47c7063dc62dc06d0cdd50e1946c088f8bf1ee1d (diff) | |
download | samba-1af0aa92b3f3467715f6ffbfedf66df1acc0a83c.tar.gz samba-1af0aa92b3f3467715f6ffbfedf66df1acc0a83c.tar.bz2 samba-1af0aa92b3f3467715f6ffbfedf66df1acc0a83c.zip |
Fix bug 6529 - Offline files conflict with Vista and Office 2003
On filesystems that can't store less than one second timestamps,
round the incoming timestamp set requests so the client can't discover
that a time set request has been truncated by the filesystem.
Needs backporting to 3.4, 3.3, 3.2 and (even) 3.0.
Jeremy
Diffstat (limited to 'source3/smbd/service.c')
-rw-r--r-- | source3/smbd/service.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source3/smbd/service.c b/source3/smbd/service.c index fc56105adf..6254d752a1 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -1015,6 +1015,19 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn, goto err_root_exit; } + if (smb_fname_cpath->st.st_ex_mtime.tv_nsec || + smb_fname_cpath->st.st_ex_atime.tv_nsec || + smb_fname_cpath->st.st_ex_ctime.tv_nsec) { + /* If any of the normal UNIX directory timestamps + * have a non-zero tv_nsec component assume + * we can fully store hires timestamps. We need + * to make a runtime/share level distinction + * as on Linux ext3 doesn't have hires timestamps, but + * ext4 does, so a compile time test won't work. JRA. + */ + conn->hires_timestamps_avail = true; + } + string_set(&conn->origpath,conn->connectpath); #if SOFTLINK_OPTIMISATION |