When requesting UNIX info levels on findfirst/findnext, don't play games with write...
authorJeremy Allison <jra@samba.org>
Wed, 10 Sep 2008 21:54:25 +0000 (14:54 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 10 Sep 2008 21:54:25 +0000 (14:54 -0700)
just return what the underlying filesystem says. Trying not to confuse UNIX apps any more than necessary.
Jeremy.
(This used to be commit b81a4dd003957a611ea190979d828b75d07a1f80)

source3/smbd/trans2.c

index 3c1753354b93c74ebeab002d14c9550d4edbea24..2e2da5cc71ff52bbb74156a74a26b6654ce25a10 100644 (file)
@@ -1945,6 +1945,8 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
                        break;
                case SMB_FIND_FILE_UNIX:
                case SMB_FIND_FILE_UNIX_INFO2:
+                       /* Always use filesystem for UNIX mtime query. */
+                       ask_sharemode = false;
                        if (!lp_unix_extensions()) {
                                reply_nterror(req, NT_STATUS_INVALID_LEVEL);
                                return;
@@ -2302,6 +2304,8 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
                        break;
                case SMB_FIND_FILE_UNIX:
                case SMB_FIND_FILE_UNIX_INFO2:
+                       /* Always use filesystem for UNIX mtime query. */
+                       ask_sharemode = false;
                        if (!lp_unix_extensions()) {
                                reply_nterror(req, NT_STATUS_INVALID_LEVEL);
                                return;
@@ -4148,7 +4152,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
                }
        }
 
-       if (!null_timespec(write_time_ts)) {
+       if (!null_timespec(write_time_ts) && !INFO_LEVEL_IS_UNIX(info_level)) {
                mtime_ts = write_time_ts;
        }