diff options
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/libsmb_file.c | 13 | ||||
-rw-r--r-- | source3/libsmb/libsmb_server.c | 1 |
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: |