From: Zachary Loafman Date: Tue, 17 Nov 2009 23:25:58 +0000 (+0000) Subject: s4 torture: Add lockread_supported based off of CAP_LOCK_AND_READ X-Git-Tag: samba-4.0.0alpha10~101 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f26a500d9ff854734decdcb196136dc8cc19eb4a;p=thirdparty%2Fsamba.git s4 torture: Add lockread_supported based off of CAP_LOCK_AND_READ Signed-off-by: Tim Prouty --- diff --git a/source4/libcli/raw/libcliraw.h b/source4/libcli/raw/libcliraw.h index 37e158a465d..69de33ce713 100644 --- a/source4/libcli/raw/libcliraw.h +++ b/source4/libcli/raw/libcliraw.h @@ -65,6 +65,7 @@ struct smbcli_negotiate { time_t server_time; uint_t readbraw_supported:1; uint_t writebraw_supported:1; + uint_t lockread_supported:1; char *server_domain; }; diff --git a/source4/libcli/raw/rawnegotiate.c b/source4/libcli/raw/rawnegotiate.c index dedc891ac12..67f3bfa0afd 100644 --- a/source4/libcli/raw/rawnegotiate.c +++ b/source4/libcli/raw/rawnegotiate.c @@ -152,6 +152,9 @@ NTSTATUS smb_raw_negotiate_recv(struct smbcli_request *req) transport->negotiate.readbraw_supported = true; transport->negotiate.writebraw_supported = true; } + + if (transport->negotiate.capabilities & CAP_LOCK_AND_READ) + transport->negotiate.lockread_supported = true; } else if (transport->negotiate.protocol >= PROTOCOL_LANMAN1) { SMBCLI_CHECK_WCT(req, 13); transport->negotiate.sec_mode = SVAL(req->in.vwv,VWV(1)); diff --git a/source4/torture/raw/read.c b/source4/torture/raw/read.c index 90ca18d5b62..efdd0404519 100644 --- a/source4/torture/raw/read.c +++ b/source4/torture/raw/read.c @@ -224,6 +224,11 @@ static bool test_lockread(struct torture_context *tctx, const char *test_data = "TEST DATA"; uint_t seed = time(NULL); + if (!cli->transport->negotiate.lockread_supported) { + printf("Server does not support lockread - skipping\n"); + return true; + } + buf = talloc_zero_array(tctx, uint8_t, maxsize); if (!torture_setup_dir(cli, BASEDIR)) { diff --git a/source4/torture/raw/write.c b/source4/torture/raw/write.c index cd1b078dbf6..31cbb98a888 100644 --- a/source4/torture/raw/write.c +++ b/source4/torture/raw/write.c @@ -425,6 +425,11 @@ static bool test_writeunlock(struct torture_context *tctx, buf = talloc_zero_array(tctx, uint8_t, maxsize); + if (!cli->transport->negotiate.lockread_supported) { + printf("Server does not support writeunlock - skipping\n"); + return true; + } + if (!torture_setup_dir(cli, BASEDIR)) { return false; }