summaryrefslogtreecommitdiffstats
path: root/source3/libsmb
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb')
-rw-r--r--source3/libsmb/libsmb_file.c13
-rw-r--r--source3/libsmb/libsmb_server.c1
2 files changed, 14 insertions, 0 deletions
diff --git a/source3/libsmb/libsmb_file.c b/source3/libsmb/libsmb_file.c
index 09f58105b2..277ca83e33 100644
--- a/source3/libsmb/libsmb_file.c
+++ b/source3/libsmb/libsmb_file.c
@@ -560,6 +560,19 @@ SMBC_getatr(SMBCCTX * context,
srv->no_pathinfo2 = True;
+ if (!srv->no_pathinfo3 &&
+ NT_STATUS_IS_OK(cli_qpathinfo3(targetcli, targetpath,
+ create_time_ts,
+ access_time_ts,
+ write_time_ts,
+ change_time_ts,
+ size, mode, ino))) {
+ TALLOC_FREE(frame);
+ return True;
+ }
+
+ srv->no_pathinfo3 = True;
+
/* if this is NT then don't bother with the getatr */
if (smb1cli_conn_capabilities(targetcli->conn) & CAP_NT_SMBS) {
errno = EPERM;
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index 9d87f421fb..2f3ea96602 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -606,6 +606,7 @@ SMBC_server_internal(TALLOC_CTX *ctx,
srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share));
srv->no_pathinfo = False;
srv->no_pathinfo2 = False;
+ srv->no_pathinfo3 = False;
srv->no_nt_session = False;
done: