diff options
author | Gregor Beck <gbeck@sernet.de> | 2013-10-11 11:02:24 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2013-10-30 15:23:51 -0700 |
commit | 0a3cc7e25ca54c5dc0b836680668401582b105b0 (patch) | |
tree | f50e6ab8240027433a03c9b086a30d72662ca450 /source3/libsmb | |
parent | 0abe678af8d763279fd218736e6df29c21b27c5c (diff) | |
download | samba-0a3cc7e25ca54c5dc0b836680668401582b105b0.tar.gz samba-0a3cc7e25ca54c5dc0b836680668401582b105b0.tar.xz samba-0a3cc7e25ca54c5dc0b836680668401582b105b0.zip |
s3:libsmb: SMBC_getatr use pathinfo3 for second try
The pathinfo2 call might fail against NetApp because it is sending broken
packages.
Signed-off-by: Gregor Beck <gbeck@sernet.de>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
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 09f58105b26..277ca83e33d 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 9d87f421fb2..2f3ea966026 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: |