[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Jul 11 11:32:02 MDT 2011


The branch, master has been updated
       via  7c10b5e s3:winbindd_cm: make use of cli->src_ss instead of calling getsockname()
       via  cf4832d s3:winbindd_cm: make use of cli->dest_ss instead calling getpeername()
       via  7a795ff s3:winbindd_cm: make use of cli_state_disconnect()
       via  0791a4d s3:winbindd_cm: make use of cli_state_is_connected()
       via  1f50d04 s3:auth_server: use cli_echo() to check if the server is alive
       via  8c29afe s3:auth_server: make use of cli_state_is_connected()
       via  6ec26f0 s3:client: simplify readline_callback() to only use cli_echo()
       via  a2e248f s3:libsmbclient: use cli_state_is_connected() in SMBC_check_server()
       via  e7c9319 s3:libsmbclient: don't log the lowlevel fd in smbc_free_context()
       via  7bba81f s3:libsmb: add cli_state_disconnect()
       via  fa60a29 s3:libsmb: make use of cli_state_is_connected()
       via  2b70c0f s3:libsmb: remove unused cli_set_port()
       via  893d137 s3:libsmb: also remember the local socket address after connect
       via  a230009 s3:smb2cli_base: add my copyright
       via  50e2785 s3-torture: run_locktest2(): replace check_error() with check_both_error()
       via  e14e674 s3-torture: run_locktest2(): replace cli_lock() with cli_lock32()
       via  c9f60454 s3-torture: run_locktest1(): replace cli_lock() with cli_lock32()
       via  23b417b s3-torture: locktest2: replace cli_lock() with cli_lock32()
       via  b6e9866 s3-torture: let wait_lock() use cli_lock32() instead of cli_lock()
      from  f2c5a0a s3-libsmb: let cli_lock64 return NTSTATUS instead of bool

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7c10b5e03379782841d0e58910c579647b75e39c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 15:12:40 2011 +0200

    s3:winbindd_cm: make use of cli->src_ss instead of calling getsockname()
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Mon Jul 11 19:31:14 CEST 2011 on sn-devel-104

commit cf4832d01069c7c91744ace97b6566c24b5ab7bc
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:58:41 2011 +0200

    s3:winbindd_cm: make use of cli->dest_ss instead calling getpeername()
    
    metze

commit 7a795ffeb42253b46a05771188d1b5f2961b990f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:38:52 2011 +0200

    s3:winbindd_cm: make use of cli_state_disconnect()
    
    metze

commit 0791a4d5beb7565c0ac476f8117b36b57fa5f938
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:19:55 2011 +0200

    s3:winbindd_cm: make use of cli_state_is_connected()
    
    metze

commit 1f50d04a5cf3ec8909ebf5b7547adef2b16af0cb
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 13:56:10 2011 +0200

    s3:auth_server: use cli_echo() to check if the server is alive
    
    This works over port 139 and also 445. send_keepalive() would
    only work on port 139.
    
    metze

commit 8c29afe14ecc474d94314c55d730760754f2f067
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 13:55:18 2011 +0200

    s3:auth_server: make use of cli_state_is_connected()
    
    metze

commit 6ec26f0c1a5ac917864078296d6ca89eb65510f9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 13:19:47 2011 +0200

    s3:client: simplify readline_callback() to only use cli_echo()
    
    cli_echo() already swallows NBT keepalive messages,
    so there's no need to filter them in the 'smbclient' layer.
    
    metze

commit a2e248f27084fd81631dd3dc6614e078d8f99924
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:15:21 2011 +0200

    s3:libsmbclient: use cli_state_is_connected() in SMBC_check_server()
    
    metze

commit e7c9319cacab287cb5772e38f30e9492afc82e8d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:29:28 2011 +0200

    s3:libsmbclient: don't log the lowlevel fd in smbc_free_context()
    
    metze

commit 7bba81f69dec444a7adb16bed5bba921e483c7b2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:33:54 2011 +0200

    s3:libsmb: add cli_state_disconnect()
    
    metze

commit fa60a299f5621ca06b25e64d552a85f846d7f0f2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 16:25:18 2011 +0200

    s3:libsmb: make use of cli_state_is_connected()
    
    metze

commit 2b70c0f4f39d2ab7e678e91bc57a2e5980dbc816
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 16:37:25 2011 +0200

    s3:libsmb: remove unused cli_set_port()
    
    metze

commit 893d137f3f426e7b91542cc50b6c1ef8d69643f0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 14:26:23 2011 +0200

    s3:libsmb: also remember the local socket address after connect
    
    metze

commit a2300094db04048766ca3f136eff2090065c6652
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 11 15:14:34 2011 +0200

    s3:smb2cli_base: add my copyright
    
    metze

commit 50e2785f5e2c870485f8219c97d447b8ea89a1a7
Author: Björn Baumbach <bb at sernet.de>
Date:   Mon Jul 11 14:23:30 2011 +0200

    s3-torture: run_locktest2(): replace check_error() with check_both_error()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit e14e6747aed8b5777d4b79ab35fc045f7a0a330f
Author: Björn Baumbach <bb at sernet.de>
Date:   Mon Jul 11 14:20:14 2011 +0200

    s3-torture: run_locktest2(): replace cli_lock() with cli_lock32()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit c9f604543bd771c94e5f4990a6b5beccd3322d74
Author: Björn Baumbach <bb at sernet.de>
Date:   Mon Jul 11 14:05:14 2011 +0200

    s3-torture: run_locktest1(): replace cli_lock() with cli_lock32()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 23b417b4c0e867913f47bc5e65c99eb395f47970
Author: Björn Baumbach <bb at sernet.de>
Date:   Mon Jul 11 13:49:18 2011 +0200

    s3-torture: locktest2: replace cli_lock() with cli_lock32()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit b6e9866c54bbcc1d9eaf184b387d863c77adb6e2
Author: Björn Baumbach <bb at sernet.de>
Date:   Mon Jul 11 11:50:59 2011 +0200

    s3-torture: let wait_lock() use cli_lock32() instead of cli_lock()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/auth/auth_server.c      |   21 ++++--
 source3/client/client.c         |   63 +++---------------
 source3/include/client.h        |    2 +-
 source3/libsmb/cliconnect.c     |    9 ++-
 source3/libsmb/clientgen.c      |   10 ---
 source3/libsmb/clierror.c       |   29 +++++----
 source3/libsmb/libsmb_context.c |    4 +-
 source3/libsmb/libsmb_server.c  |    8 +-
 source3/libsmb/proto.h          |    2 +-
 source3/libsmb/smb2cli_base.c   |    1 +
 source3/torture/locktest2.c     |    3 +-
 source3/torture/torture.c       |  137 +++++++++++++++++++++++++--------------
 source3/winbindd/winbindd_cm.c  |   39 +++++++-----
 13 files changed, 167 insertions(+), 161 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/auth/auth_server.c b/source3/auth/auth_server.c
index d50ed7a..1b7993b 100644
--- a/source3/auth/auth_server.c
+++ b/source3/auth/auth_server.c
@@ -158,20 +158,25 @@ static bool send_server_keepalive(const struct timeval *now,
 {
 	struct server_security_state *state = talloc_get_type_abort(
 		private_data, struct server_security_state);
+	NTSTATUS status;
+	unsigned char garbage[16];
 
-	if (!state->cli || !state->cli->initialised) {
-		return False;
+	if (!cli_state_is_connected(state->cli)) {
+		return false;
 	}
 
-	if (send_keepalive(state->cli->fd)) {
-		return True;
+	/* Ping the server to keep the connection alive using SMBecho. */
+	memset(garbage, 0xf0, sizeof(garbage));
+	status = cli_echo(state->cli, 1, data_blob_const(garbage, sizeof(garbage)));
+	if (NT_STATUS_IS_OK(status)) {
+		return true;
 	}
 
-	DEBUG( 2, ( "send_server_keepalive: password server keepalive "
-		    "failed.\n"));
+	DEBUG(2,("send_server_keepalive: password server SMBecho failed: %s\n",
+		 nt_errstr(status)));
 	cli_shutdown(state->cli);
 	state->cli = NULL;
-	return False;
+	return false;
 }
 
 static int destroy_server_security(struct server_security_state *state)
@@ -285,7 +290,7 @@ static NTSTATUS check_smbserver_security(const struct auth_context *auth_context
 		locally_made_cli = True;
 	}
 
-	if (!cli || !cli->initialised) {
+	if (!cli_state_is_connected(cli)) {
 		DEBUG(1,("password server is not connected (cli not initialised)\n"));
 		return NT_STATUS_LOGON_FAILURE;
 	}  
diff --git a/source3/client/client.c b/source3/client/client.c
index 4a5a31a..d489ea7 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -4911,7 +4911,8 @@ static void readline_callback(void)
 	static time_t last_t;
 	struct timespec now;
 	time_t t;
-	int ret, revents;
+	NTSTATUS status;
+	unsigned char garbage[16];
 
 	clock_gettime_mono(&now);
 	t = now.tv_sec;
@@ -4921,60 +4922,14 @@ static void readline_callback(void)
 
 	last_t = t;
 
- again:
-
-	if (cli->fd == -1)
-		return;
-
-	/* We deliberately use receive_smb_raw instead of
-	   client_receive_smb as we want to receive
-	   session keepalives and then drop them here.
-	*/
-
-	ret = poll_intr_one_fd(cli->fd, POLLIN|POLLHUP, 0, &revents);
-
-	if ((ret > 0) && (revents & (POLLIN|POLLHUP|POLLERR))) {
-		char inbuf[CLI_SAMBA_MAX_LARGE_READX_SIZE + LARGE_WRITEX_HDR_SIZE];
-		NTSTATUS status;
-		size_t len;
-
-		status = receive_smb_raw(cli->fd, inbuf, sizeof(inbuf), 0, 0, &len);
-
-		if (!NT_STATUS_IS_OK(status)) {
-			if (cli->fd != -1) {
-				close(cli->fd);
-				cli->fd = -1;
-			}
-
-			DEBUG(0, ("Read from server failed, maybe it closed "
-				  "the connection: %s\n", nt_errstr(status)));
-
-			finished = true;
-			smb_readline_done();
-			return;
-		}
-		if(CVAL(inbuf,0) != SMBkeepalive) {
-			DEBUG(0, ("Read from server "
-				"returned unexpected packet!\n"));
-			return;
-		}
-
-		goto again;
-	}
-
 	/* Ping the server to keep the connection alive using SMBecho. */
-	{
-		NTSTATUS status;
-		unsigned char garbage[16];
-		memset(garbage, 0xf0, sizeof(garbage));
-		status = cli_echo(cli, 1, data_blob_const(garbage, sizeof(garbage)));
-
-		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(0, ("SMBecho failed. Maybe server has closed "
-				"the connection\n"));
-			finished = true;
-			smb_readline_done();
-		}
+	memset(garbage, 0xf0, sizeof(garbage));
+	status = cli_echo(cli, 1, data_blob_const(garbage, sizeof(garbage)));
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(0, ("SMBecho failed. Maybe server has closed "
+			"the connection\n"));
+		finished = true;
+		smb_readline_done();
 	}
 }
 
diff --git a/source3/include/client.h b/source3/include/client.h
index 4fb785e..eada792 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -51,7 +51,6 @@ struct cli_state {
 	 * A list of subsidiary connections for DFS.
 	 */
         struct cli_state *prev, *next;
-	int port;
 	int fd;
 	uint16 cnum;
 	uint16 pid;
@@ -82,6 +81,7 @@ struct cli_state {
 	char *share;
 	char *dev;
 	struct nmb_name called;
+	struct sockaddr_storage src_ss;
 	struct nmb_name calling;
 	struct sockaddr_storage dest_ss;
 
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index c543297..e5d8700 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -2884,8 +2884,15 @@ NTSTATUS cli_connect_nb(const char *host, struct sockaddr_storage *pss,
 		goto fail;
 	}
 	cli->fd = fd;
-	cli->port = port;
 
+	length = sizeof(cli->src_ss);
+	ret = getsockname(fd, (struct sockaddr *)(void *)&cli->src_ss,
+			  &length);
+	if (ret == -1) {
+		status = map_nt_error_from_unix(errno);
+		cli_shutdown(cli);
+		goto fail;
+	}
 	length = sizeof(cli->dest_ss);
 	ret = getpeername(fd, (struct sockaddr *)(void *)&cli->dest_ss,
 			  &length);
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 2380ceb..bcb1215 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -51,15 +51,6 @@ unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout)
 }
 
 /****************************************************************************
- Change the port number used to call on.
-****************************************************************************/
-
-void cli_set_port(struct cli_state *cli, int port)
-{
-	cli->port = port;
-}
-
-/****************************************************************************
  convenience routine to find if we negotiated ucs2
 ****************************************************************************/
 
@@ -191,7 +182,6 @@ struct cli_state *cli_initialise_ex(int signing_state)
 	if (!cli->dfs_mountpoint) {
 		goto error;
 	}
-	cli->port = 0;
 	cli->fd = -1;
 	cli->raw_status = NT_STATUS_INTERNAL_ERROR;
 	cli->cnum = -1;
diff --git a/source3/libsmb/clierror.c b/source3/libsmb/clierror.c
index 7541a69..92c2cc2 100644
--- a/source3/libsmb/clierror.c
+++ b/source3/libsmb/clierror.c
@@ -45,7 +45,7 @@ const char *cli_errstr(struct cli_state *cli)
 		goto done;
 	}
 
-	if (cli->fd == -1 && NT_STATUS_IS_OK(cli->raw_status)) {
+	if (!cli_state_is_connected(cli) && NT_STATUS_IS_OK(cli->raw_status)) {
 		return nt_errstr(NT_STATUS_CONNECTION_DISCONNECTED);
 	}
 
@@ -64,7 +64,7 @@ const char *cli_errstr(struct cli_state *cli)
 NTSTATUS cli_nt_error(struct cli_state *cli)
 {
 	/* Deal with socket errors first. */
-	if (cli->fd == -1) {
+	if (!cli_state_is_connected(cli)) {
 		return NT_STATUS_CONNECTION_DISCONNECTED;
 	}
 
@@ -85,11 +85,7 @@ NTSTATUS cli_nt_error(struct cli_state *cli)
 
 void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode)
 {
-	if(!cli->initialised) {
-		return;
-	}
-
-	if (cli->fd == -1) {
+	if (!cli_state_is_connected(cli)) {
 		*eclass = ERRDOS;
 		*ecode = ERRnotconnected;
 		return;
@@ -144,8 +140,8 @@ int cli_errno(struct cli_state *cli)
 bool cli_is_error(struct cli_state *cli)
 {
 	/* A socket error is always an error. */
-	if (cli->fd == -1) {
-		return True;
+	if (!cli_state_is_connected(cli)) {
+		return true;
 	}
 
 	if (NT_STATUS_IS_DOS(cli->raw_status)) {
@@ -162,8 +158,8 @@ bool cli_is_error(struct cli_state *cli)
 bool cli_is_nt_error(struct cli_state *cli)
 {
 	/* A socket error is always an NT error. */
-	if (cli->fd == -1) {
-		return True;
+	if (!cli_state_is_connected(cli)) {
+		return true;
 	}
 
 	return cli_is_error(cli) && !NT_STATUS_IS_DOS(cli->raw_status);
@@ -174,8 +170,8 @@ bool cli_is_nt_error(struct cli_state *cli)
 bool cli_is_dos_error(struct cli_state *cli)
 {
 	/* A socket error is always a DOS error. */
-	if (cli->fd == -1) {
-		return True;
+	if (!cli_state_is_connected(cli)) {
+		return true;
 	}
 
 	return cli_is_error(cli) && NT_STATUS_IS_DOS(cli->raw_status);
@@ -198,3 +194,10 @@ bool cli_state_is_connected(struct cli_state *cli)
 	return true;
 }
 
+void cli_state_disconnect(struct cli_state *cli)
+{
+	if (cli->fd != -1) {
+		close(cli->fd);
+	}
+	cli->fd = -1;
+}
diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c
index dbf70e0..14f646f 100644
--- a/source3/libsmb/libsmb_context.c
+++ b/source3/libsmb/libsmb_context.c
@@ -261,8 +261,8 @@ smbc_free_context(SMBCCTX *context,
                                   "Nice way shutdown failed.\n"));
                         s = context->internal->servers;
                         while (s) {
-                                DEBUG(1, ("Forced shutdown: %p (fd=%d)\n",
-                                          s, s->cli->fd));
+                                DEBUG(1, ("Forced shutdown: %p (cli=%p)\n",
+                                          s, s->cli));
                                 cli_shutdown(s->cli);
                                 smbc_getFunctionRemoveCachedServer(context)(context,
                                                                          s);
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index b355137..49018a8 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -44,11 +44,11 @@ int
 SMBC_check_server(SMBCCTX * context,
                   SMBCSRV * server) 
 {
-        socklen_t size;
-        struct sockaddr addr;
+	if (!cli_state_is_connected(server->cli)) {
+		return 1;
+	}
 
-        size = sizeof(addr);
-        return (getpeername(server->cli->fd, &addr, &size) == -1);
+	return 0;
 }
 
 /* 
diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h
index 151df40..66ab6e6 100644
--- a/source3/libsmb/proto.h
+++ b/source3/libsmb/proto.h
@@ -154,7 +154,6 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
 
 int cli_set_message(char *buf,int num_words,int num_bytes,bool zero);
 unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout);
-void cli_set_port(struct cli_state *cli, int port);
 void cli_setup_packet_buf(struct cli_state *cli, char *buf);
 NTSTATUS cli_set_domain(struct cli_state *cli, const char *domain);
 NTSTATUS cli_set_username(struct cli_state *cli, const char *username);
@@ -192,6 +191,7 @@ bool cli_is_error(struct cli_state *cli);
 bool cli_is_nt_error(struct cli_state *cli);
 bool cli_is_dos_error(struct cli_state *cli);
 bool cli_state_is_connected(struct cli_state *cli);
+void cli_state_disconnect(struct cli_state *cli);
 
 /* The following definitions come from libsmb/clifile.c  */
 
diff --git a/source3/libsmb/smb2cli_base.c b/source3/libsmb/smb2cli_base.c
index 8760c30..da1d598 100644
--- a/source3/libsmb/smb2cli_base.c
+++ b/source3/libsmb/smb2cli_base.c
@@ -2,6 +2,7 @@
    Unix SMB/CIFS implementation.
    smb2 lib
    Copyright (C) Volker Lendecke 2011
+   Copyright (C) Stefan Metzmacher 2011
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/source3/torture/locktest2.c b/source3/torture/locktest2.c
index aba6d2f..5115d13 100644
--- a/source3/torture/locktest2.c
+++ b/source3/torture/locktest2.c
@@ -114,7 +114,8 @@ static bool try_lock(struct cli_state *c, int fstype,
 
 	switch (fstype) {
 	case FSTYPE_SMB:
-		return cli_lock(c, fd, start, len, LOCK_TIMEOUT, op);
+		return NT_STATUS_IS_OK(cli_lock32(c, fd, start, len,
+				       LOCK_TIMEOUT, op));
 
 	case FSTYPE_NFS:
 		lock.l_type = (op==READ_LOCK) ? F_RDLCK:F_WRLCK;
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 52ae4bb..d40d5aa 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -542,10 +542,20 @@ static bool check_error(int line, struct cli_state *c,
 
 static bool wait_lock(struct cli_state *c, int fnum, uint32 offset, uint32 len)
 {
-	while (!cli_lock(c, fnum, offset, len, -1, WRITE_LOCK)) {
-		if (!check_error(__LINE__, c, ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED)) return False;
+	NTSTATUS status;
+
+	status = cli_lock32(c, fnum, offset, len, -1, WRITE_LOCK);
+
+	while (!NT_STATUS_IS_OK(status)) {
+		if (!check_both_error(__LINE__, status, ERRDOS,
+				      ERRlock, NT_STATUS_LOCK_NOT_GRANTED)) {
+			return false;
+		}
+
+		status = cli_lock32(c, fnum, offset, len, -1, WRITE_LOCK);
 	}
-	return True;
+
+	return true;
 }
 
 
@@ -1226,30 +1236,35 @@ static bool run_locktest1(int dummy)
 		return False;
 	}
 
-	if (!cli_lock(cli1, fnum1, 0, 4, 0, WRITE_LOCK)) {
-		printf("lock1 failed (%s)\n", cli_errstr(cli1));
-		return False;
+	status = cli_lock32(cli1, fnum1, 0, 4, 0, WRITE_LOCK);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("lock1 failed (%s)\n", nt_errstr(status));
+		return false;
 	}
 
-
-	if (cli_lock(cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
+	status = cli_lock32(cli2, fnum3, 0, 4, 0, WRITE_LOCK);
+	if (NT_STATUS_IS_OK(status)) {
 		printf("lock2 succeeded! This is a locking bug\n");
-		return False;
+		return false;
 	} else {
-		if (!check_error(__LINE__, cli2, ERRDOS, ERRlock, 
-				 NT_STATUS_LOCK_NOT_GRANTED)) return False;
+		if (!check_both_error(__LINE__, status, ERRDOS, ERRlock,
+				      NT_STATUS_LOCK_NOT_GRANTED)) {
+			return false;
+		}
 	}
 
-
 	lock_timeout = (1 + (random() % 20));
 	printf("Testing lock timeout with timeout=%u\n", lock_timeout);
 	t1 = time(NULL);
-	if (cli_lock(cli2, fnum3, 0, 4, lock_timeout * 1000, WRITE_LOCK)) {
+	status = cli_lock32(cli2, fnum3, 0, 4, lock_timeout * 1000, WRITE_LOCK);
+	if (NT_STATUS_IS_OK(status)) {
 		printf("lock3 succeeded! This is a locking bug\n");
-		return False;
+		return false;
 	} else {
-		if (!check_error(__LINE__, cli2, ERRDOS, ERRlock, 
-				 NT_STATUS_FILE_LOCK_CONFLICT)) return False;
+		if (!check_both_error(__LINE__, status, ERRDOS, ERRlock,
+				      NT_STATUS_FILE_LOCK_CONFLICT)) {
+			return false;
+		}
 	}
 	t2 = time(NULL);
 
@@ -1266,12 +1281,15 @@ static bool run_locktest1(int dummy)
 		return False;
 	}
 
-	if (cli_lock(cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
+	status = cli_lock32(cli2, fnum3, 0, 4, 0, WRITE_LOCK);
+	if (NT_STATUS_IS_OK(status)) {
 		printf("lock4 succeeded! This is a locking bug\n");
-		return False;
+		return false;
 	} else {
-		if (!check_error(__LINE__, cli2, ERRDOS, ERRlock, 
-				 NT_STATUS_FILE_LOCK_CONFLICT)) return False;
+		if (!check_both_error(__LINE__, status, ERRDOS, ERRlock,
+				      NT_STATUS_FILE_LOCK_CONFLICT)) {
+			return false;
+		}
 	}
 
 	status = cli_close(cli1, fnum1);
@@ -1625,37 +1643,48 @@ static bool run_locktest2(int dummy)
 
 	cli_setpid(cli, 1);
 
-	if (!cli_lock(cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
-		printf("lock1 failed (%s)\n", cli_errstr(cli));
-		return False;
+	status = cli_lock32(cli, fnum1, 0, 4, 0, WRITE_LOCK);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("lock1 failed (%s)\n", nt_errstr(status));
+		return false;
 	}
 
-	if (cli_lock(cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
+	status = cli_lock32(cli, fnum1, 0, 4, 0, WRITE_LOCK);
+	if (NT_STATUS_IS_OK(status)) {
 		printf("WRITE lock1 succeeded! This is a locking bug\n");
-		correct = False;
+		correct = false;
 	} else {
-		if (!check_error(__LINE__, cli, ERRDOS, ERRlock, 
-				 NT_STATUS_LOCK_NOT_GRANTED)) return False;
+		if (!check_both_error(__LINE__, status, ERRDOS, ERRlock,
+				      NT_STATUS_LOCK_NOT_GRANTED)) {
+			return false;
+		}
 	}
 
-	if (cli_lock(cli, fnum2, 0, 4, 0, WRITE_LOCK)) {
+	status = cli_lock32(cli, fnum2, 0, 4, 0, WRITE_LOCK);
+	if (NT_STATUS_IS_OK(status)) {
 		printf("WRITE lock2 succeeded! This is a locking bug\n");
-		correct = False;
+		correct = false;
 	} else {
-		if (!check_error(__LINE__, cli, ERRDOS, ERRlock, 
-				 NT_STATUS_LOCK_NOT_GRANTED)) return False;
+		if (!check_both_error(__LINE__, status, ERRDOS, ERRlock,
+				      NT_STATUS_LOCK_NOT_GRANTED)) {
+			return false;
+		}
 	}
 
-	if (cli_lock(cli, fnum2, 0, 4, 0, READ_LOCK)) {
+	status = cli_lock32(cli, fnum2, 0, 4, 0, READ_LOCK);
+	if (NT_STATUS_IS_OK(status)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list