[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon May 14 09:03:04 MDT 2012


The branch, master has been updated
       via  aca64f6 libcli/smb: move smb2cli_logoff_* from source3 to the top level
       via  ce0d6d8 libcli/smb: git mv smb2_session.c smb2cli_session.c
       via  bf6b2fa s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_write.c
       via  2a39c5f s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_session.c
       via  640154c s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_read.c
       via  1395e46 s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_query_directory.c
       via  f88c60b s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_ioctl.c
       via  1355552 s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_flush.c
       via  820160c s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_create.c
       via  b2dcc7a s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_close.c
       via  0cb1fda s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_tcon.c
       via  b2c9fe4 lib/util: move tevent_req_poll_ntstatus() to tevent_ntstatus.c
       via  23887fa s3:torture: add #include "lib/util/tevent_ntstatus.h" to test_addrchange.c
       via  05e4f24 s3:lib/util: use map_nt_error_from_unix_common() in tevent_req_poll_ntstatus()
       via  b4f2184 lib/util: add missing 'errors' dependency to 'tevent-util'
       via  bf8829b5 s4:lib/events: no longer define TEVENT_COMPAT_DEFINES
       via  d41db72 s4:lib/events: remove unused event_context_find() prototype
       via  99a72e9 libcli/nbt: no longer use old 'event_' tevent compat symbols
       via  e05b54e lib/tevent/testsuite: no longer use 'compat' symbols
       via  e7e6796 s3:smb2_close: make the top level code async using
       via  b8d999c s3:smb2_close: add add smbd_smb2_close_send/recv as wrapper
       via  643e648 s3:smb2_close: don't do any marshalling in smbd_smb2_close() let the caller to it
       via  302f767 s3:smb2_tcon: make the top level code async using
       via  b19a9db s3:smb2_tcon: add smbd_smb2_tree_connect_send/recv as wrapper
      from  46a41d0 s3: Fix Coverity ID 241320 Array compared against 0

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


- Log -----------------------------------------------------------------
commit aca64f642da78e777b113a6b25342f18fc18c502
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:47:05 2012 +0200

    libcli/smb: move smb2cli_logoff_* from source3 to the top level
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Mon May 14 17:02:46 CEST 2012 on sn-devel-104

commit ce0d6d89eebf7747b1e8e6489400752287f4bec1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:41:10 2012 +0200

    libcli/smb: git mv smb2_session.c smb2cli_session.c
    
    metze

commit bf6b2fa96bc3668cfaf3d28e8a377c6b7cac950a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_write.c
    
    metze

commit 2a39c5f51358889d02e7b949ae32598e320b4182
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_session.c
    
    metze

commit 640154c4346400ca50a3268d3fc41a4a23856dd5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_read.c
    
    metze

commit 1395e46a8c0a6362df13ad552660e80540dcfa3c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_query_directory.c
    
    metze

commit f88c60bc70af4430cb27167d90d4dadb7346c4d1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_ioctl.c
    
    metze

commit 13555524528f5fc15340cda89c778a813768fb46
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_flush.c
    
    metze

commit 820160ca0d97446d52499c8a5c5951967476a8ed
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_create.c
    
    metze

commit b2dcc7a061cb7438a51f886d7cd649b4c577ae04
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:56:47 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_close.c
    
    metze

commit 0cb1fdac4ee89eb02a4c5772bec8796d136f3026
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:55:42 2012 +0200

    s3:libsmb: s/\<event_context/tevent_context/gc in smb2cli_tcon.c
    
    metze

commit b2c9fe4ad18fd4ecb04bc2e3c2896e06418efed0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 10:02:24 2012 +0200

    lib/util: move tevent_req_poll_ntstatus() to tevent_ntstatus.c
    
    metze

commit 23887fa87e403a79c8fd5f28373940bd695a293c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:47:22 2012 +0200

    s3:torture: add #include "lib/util/tevent_ntstatus.h" to test_addrchange.c
    
    metze

commit 05e4f247297f9a379607b290b41ab905bbfab4de
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 09:58:56 2012 +0200

    s3:lib/util: use map_nt_error_from_unix_common() in tevent_req_poll_ntstatus()
    
    metze

commit b4f2184a29d6ca41aacbaff6f499982895b74fd6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:46:39 2012 +0200

    lib/util: add missing 'errors' dependency to 'tevent-util'
    
    metze

commit bf8829b56f75019036c76be1bd46ad816586e3d9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:50:52 2012 +0200

    s4:lib/events: no longer define TEVENT_COMPAT_DEFINES
    
    metze

commit d41db7247fb55a0559d4721fdf12dc559045a2f5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:49:52 2012 +0200

    s4:lib/events: remove unused event_context_find() prototype
    
    metze

commit 99a72e913bc1adc70de14a17bcd61de93a874574
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:48:50 2012 +0200

    libcli/nbt: no longer use old 'event_' tevent compat symbols
    
    metze

commit e05b54ea326f9dd896db1391ba43e050c3d16e32
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 11:48:00 2012 +0200

    lib/tevent/testsuite: no longer use 'compat' symbols
    
    metze

commit e7e67962c724606c1538fe74b88779ed88d80d49
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 13:08:34 2012 +0200

    s3:smb2_close: make the top level code async using
    
    metze

commit b8d999ce84f15a69c469716e88c0c414f7fcc636
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 12:57:15 2012 +0200

    s3:smb2_close: add add smbd_smb2_close_send/recv as wrapper
    
    metze

commit 643e648ed0696ff26cbbc0d07bbadaee450bcb51
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 12:43:52 2012 +0200

    s3:smb2_close: don't do any marshalling in smbd_smb2_close() let the caller to it
    
    metze

commit 302f767fb763fb281e4de23b122f84ffa9fe845e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon May 14 08:41:03 2012 +0200

    s3:smb2_tcon: make the top level code async using
    
    metze

commit b19a9dbb5b9429c71992bb66af8951a1263e1eb5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sun May 13 17:47:07 2012 +0200

    s3:smb2_tcon: add smbd_smb2_tree_connect_send/recv as wrapper
    
    metze

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

Summary of changes:
 lib/tevent/testsuite.c                           |   24 +-
 lib/util/tevent_ntstatus.c                       |   12 +
 lib/util/tevent_ntstatus.h                       |    4 +
 lib/util/wscript_build                           |    2 +-
 libcli/nbt/nbtsocket.c                           |   48 ++--
 libcli/smb/{smb2_session.c => smb2cli_session.c} |  100 +++++++++
 libcli/smb/smbXcli_base.h                        |   10 +
 libcli/smb/wscript_build                         |    2 +-
 source3/Makefile.in                              |    3 +-
 source3/include/proto.h                          |    3 -
 source3/lib/util.c                               |   11 -
 source3/libsmb/smb2cli.h                         |   10 -
 source3/libsmb/smb2cli_close.c                   |    4 +-
 source3/libsmb/smb2cli_create.c                  |    4 +-
 source3/libsmb/smb2cli_flush.c                   |    4 +-
 source3/libsmb/smb2cli_ioctl.c                   |    2 +-
 source3/libsmb/smb2cli_query_directory.c         |    4 +-
 source3/libsmb/smb2cli_read.c                    |    4 +-
 source3/libsmb/smb2cli_session.c                 |  130 ------------
 source3/libsmb/smb2cli_tcon.c                    |    8 +-
 source3/libsmb/smb2cli_write.c                   |    4 +-
 source3/smbd/smb2_close.c                        |  244 +++++++++++++++++++---
 source3/smbd/smb2_tcon.c                         |  159 ++++++++++++--
 source3/torture/test_addrchange.c                |    1 +
 source3/wscript_build                            |    1 -
 source4/lib/events/events.h                      |    4 -
 26 files changed, 530 insertions(+), 272 deletions(-)
 rename libcli/smb/{smb2_session.c => smb2cli_session.c} (72%)
 delete mode 100644 source3/libsmb/smb2cli_session.c


Changeset truncated at 500 lines:

diff --git a/lib/tevent/testsuite.c b/lib/tevent/testsuite.c
index 1e2f25a..e32ebf5 100644
--- a/lib/tevent/testsuite.c
+++ b/lib/tevent/testsuite.c
@@ -51,7 +51,7 @@ static void finished_handler(struct tevent_context *ev_ctx, struct tevent_timer
 	(*finished) = 1;
 }
 
-static void count_handler(struct tevent_context *ev_ctx, struct signal_event *te,
+static void count_handler(struct tevent_context *ev_ctx, struct tevent_signal *te,
 			  int signum, int count, void *info, void *private_data)
 {
 	int *countp = (int *)private_data;
@@ -77,7 +77,7 @@ static bool test_event_context(struct torture_context *test,
 	struct timeval t;
 	char c = 0;
 
-	ev_ctx = event_context_init_byname(test, backend);
+	ev_ctx = tevent_context_init_byname(test, backend);
 	if (ev_ctx == NULL) {
 		torture_comment(test, "event backend '%s' not supported\n", backend);
 		return true;
@@ -91,21 +91,21 @@ static bool test_event_context(struct torture_context *test,
 	/* create a pipe */
 	pipe(fd);
 
-	fde = event_add_fd(ev_ctx, ev_ctx, fd[0], EVENT_FD_READ,
-			   fde_handler, fd);
+	fde = tevent_add_fd(ev_ctx, ev_ctx, fd[0], TEVENT_FD_READ,
+			    fde_handler, fd);
 	tevent_fd_set_auto_close(fde);
 
-	event_add_timed(ev_ctx, ev_ctx, timeval_current_ofs(2,0), 
-			finished_handler, &finished);
+	tevent_add_timer(ev_ctx, ev_ctx, timeval_current_ofs(2,0),
+			 finished_handler, &finished);
 
 #ifdef SA_RESTART
-	se1 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESTART, count_handler, &alarm_count);
+	se1 = tevent_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESTART, count_handler, &alarm_count);
 #endif
 #ifdef SA_RESETHAND
-	se2 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESETHAND, count_handler, &alarm_count);
+	se2 = tevent_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESETHAND, count_handler, &alarm_count);
 #endif
 #ifdef SA_SIGINFO
-	se3 = event_add_signal(ev_ctx, ev_ctx, SIGUSR1, SA_SIGINFO, count_handler, &info_count);
+	se3 = tevent_add_signal(ev_ctx, ev_ctx, SIGUSR1, SA_SIGINFO, count_handler, &info_count);
 #endif
 
 	write(fd[1], &c, 1);
@@ -113,7 +113,7 @@ static bool test_event_context(struct torture_context *test,
 	t = timeval_current();
 	while (!finished) {
 		errno = 0;
-		if (event_loop_once(ev_ctx) == -1) {
+		if (tevent_loop_once(ev_ctx) == -1) {
 			talloc_free(ev_ctx);
 			torture_fail(test, talloc_asprintf(test, "Failed event loop %s\n", strerror(errno)));
 		}
@@ -123,7 +123,7 @@ static bool test_event_context(struct torture_context *test,
 	close(fd[1]);
 
 	while (alarm_count < fde_count+1) {
-		if (event_loop_once(ev_ctx) == -1) {
+		if (tevent_loop_once(ev_ctx) == -1) {
 			break;
 		}
 	}
@@ -149,7 +149,7 @@ static bool test_event_context(struct torture_context *test,
 struct torture_suite *torture_local_event(TALLOC_CTX *mem_ctx)
 {
 	struct torture_suite *suite = torture_suite_create(mem_ctx, "event");
-	const char **list = event_backend_list(suite);
+	const char **list = tevent_backend_list(suite);
 	int i;
 
 	for (i=0;list && list[i];i++) {
diff --git a/lib/util/tevent_ntstatus.c b/lib/util/tevent_ntstatus.c
index 764d251..cbbc698 100644
--- a/lib/util/tevent_ntstatus.c
+++ b/lib/util/tevent_ntstatus.c
@@ -19,6 +19,7 @@
 
 #include "../replace/replace.h"
 #include "tevent_ntstatus.h"
+#include "libcli/util/error.h"
 
 #define TEVENT_NTERROR_MAGIC (0x917b5acd)
 
@@ -97,3 +98,14 @@ void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
 	}
 	tevent_req_done(req);
 }
+
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+			      struct tevent_context *ev,
+			      NTSTATUS *status)
+{
+	bool ret = tevent_req_poll(req, ev);
+	if (!ret) {
+		*status = map_nt_error_from_unix_common(errno);
+	}
+	return ret;
+}
diff --git a/lib/util/tevent_ntstatus.h b/lib/util/tevent_ntstatus.h
index 4ac9243..570b6f9 100644
--- a/lib/util/tevent_ntstatus.h
+++ b/lib/util/tevent_ntstatus.h
@@ -40,4 +40,8 @@ NTSTATUS tevent_req_simple_recv_ntstatus(struct tevent_req *req);
 void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
 				       NTSTATUS subreq_status);
 
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+			      struct tevent_context *ev,
+			      NTSTATUS *status);
+
 #endif
diff --git a/lib/util/wscript_build b/lib/util/wscript_build
index d50592b..2fa4023 100755
--- a/lib/util/wscript_build
+++ b/lib/util/wscript_build
@@ -57,7 +57,7 @@ bld.SAMBA_LIBRARY('util_tdb',
 bld.SAMBA_LIBRARY('tevent-util',
 	source='tevent_unix.c tevent_ntstatus.c tevent_werror.c',
 	local_include=False,
-	public_deps='tevent',
+	public_deps='tevent errors',
 	public_headers='tevent_ntstatus.h tevent_unix.h tevent_werror.h',
 	header_path=[ ('*', 'util') ],
 	pc_files=[],
diff --git a/libcli/nbt/nbtsocket.c b/libcli/nbt/nbtsocket.c
index 2b792c5..6c62739 100644
--- a/libcli/nbt/nbtsocket.c
+++ b/libcli/nbt/nbtsocket.c
@@ -50,11 +50,11 @@ static int nbt_name_request_destructor(struct nbt_name_request *req)
 		req->te = NULL;
 	}
 	if (req->nbtsock->send_queue == NULL) {
-		EVENT_FD_NOT_WRITEABLE(req->nbtsock->fde);
+		TEVENT_FD_NOT_WRITEABLE(req->nbtsock->fde);
 	}
 	if (req->nbtsock->num_pending == 0 &&
 	    req->nbtsock->incoming.handler == NULL) {
-		EVENT_FD_NOT_READABLE(req->nbtsock->fde);
+		TEVENT_FD_NOT_READABLE(req->nbtsock->fde);
 	}
 	return 0;
 }
@@ -87,12 +87,12 @@ static void nbt_name_socket_send(struct nbt_name_socket *nbtsock)
 		if (req->is_reply) {
 			talloc_free(req);
 		} else {
-			EVENT_FD_READABLE(nbtsock->fde);
+			TEVENT_FD_READABLE(nbtsock->fde);
 			nbtsock->num_pending++;
 		}
 	}
 
-	EVENT_FD_NOT_WRITEABLE(nbtsock->fde);
+	TEVENT_FD_NOT_WRITEABLE(nbtsock->fde);
 	talloc_free(tmp_ctx);
 	return;
 
@@ -122,15 +122,15 @@ static void nbt_name_socket_timeout(struct tevent_context *ev, struct tevent_tim
 
 	if (req->num_retries != 0) {
 		req->num_retries--;
-		req->te = event_add_timed(req->nbtsock->event_ctx, req,
-					  timeval_add(&t, req->timeout, 0),
-					  nbt_name_socket_timeout, req);
+		req->te = tevent_add_timer(req->nbtsock->event_ctx, req,
+					   timeval_add(&t, req->timeout, 0),
+					   nbt_name_socket_timeout, req);
 		if (req->state != NBT_REQUEST_SEND) {
 			req->state = NBT_REQUEST_SEND;
 			DLIST_ADD_END(req->nbtsock->send_queue, req,
 				      struct nbt_name_request *);
 		}
-		EVENT_FD_WRITEABLE(req->nbtsock->fde);
+		TEVENT_FD_WRITEABLE(req->nbtsock->fde);
 		return;
 	}
 
@@ -273,9 +273,9 @@ void nbt_name_socket_handle_response_packet(struct nbt_name_request *req,
 			ttl = 5 + 4*25;
 		}
 		req->timeout = ttl;
-		req->te = event_add_timed(req->nbtsock->event_ctx, req,
-					  timeval_current_ofs(req->timeout, 0),
-					  nbt_name_socket_timeout, req);
+		req->te = tevent_add_timer(req->nbtsock->event_ctx, req,
+					   timeval_current_ofs(req->timeout, 0),
+					   nbt_name_socket_timeout, req);
 		return;
 	}
 
@@ -318,10 +318,10 @@ static void nbt_name_socket_handler(struct tevent_context *ev, struct tevent_fd
 {
 	struct nbt_name_socket *nbtsock = talloc_get_type(private_data,
 							  struct nbt_name_socket);
-	if (flags & EVENT_FD_WRITE) {
+	if (flags & TEVENT_FD_WRITE) {
 		nbt_name_socket_send(nbtsock);
 	}
-	if (flags & EVENT_FD_READ) {
+	if (flags & TEVENT_FD_READ) {
 		nbt_name_socket_recv(nbtsock);
 	}
 }
@@ -358,9 +358,9 @@ _PUBLIC_ struct nbt_name_socket *nbt_name_socket_init(TALLOC_CTX *mem_ctx,
 	nbtsock->incoming.handler = NULL;
 	nbtsock->unexpected.handler = NULL;
 
-	nbtsock->fde = event_add_fd(nbtsock->event_ctx, nbtsock,
-				    socket_get_fd(nbtsock->sock), 0,
-				    nbt_name_socket_handler, nbtsock);
+	nbtsock->fde = tevent_add_fd(nbtsock->event_ctx, nbtsock,
+				     socket_get_fd(nbtsock->sock), 0,
+				     nbt_name_socket_handler, nbtsock);
 
 	return nbtsock;
 
@@ -407,9 +407,9 @@ struct nbt_name_request *nbt_name_request_send(struct nbt_name_socket *nbtsock,
 	request->name_trn_id = id;
 	req->name_trn_id     = id;
 
-	req->te = event_add_timed(nbtsock->event_ctx, req,
-				  timeval_current_ofs(req->timeout, 0),
-				  nbt_name_socket_timeout, req);
+	req->te = tevent_add_timer(nbtsock->event_ctx, req,
+				   timeval_current_ofs(req->timeout, 0),
+				   nbt_name_socket_timeout, req);
 
 	talloc_set_destructor(req, nbt_name_request_destructor);
 
@@ -426,7 +426,7 @@ struct nbt_name_request *nbt_name_request_send(struct nbt_name_socket *nbtsock,
 		NDR_PRINT_DEBUG(nbt_name_packet, request);
 	}
 
-	EVENT_FD_WRITEABLE(nbtsock->fde);
+	TEVENT_FD_WRITEABLE(nbtsock->fde);
 
 	return req;
 
@@ -471,7 +471,7 @@ _PUBLIC_ NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock,
 
 	DLIST_ADD_END(nbtsock->send_queue, req, struct nbt_name_request *);
 
-	EVENT_FD_WRITEABLE(nbtsock->fde);
+	TEVENT_FD_WRITEABLE(nbtsock->fde);
 
 	return NT_STATUS_OK;
 
@@ -488,7 +488,7 @@ NTSTATUS nbt_name_request_recv(struct nbt_name_request *req)
 	if (!req) return NT_STATUS_NO_MEMORY;
 
 	while (req->state < NBT_REQUEST_DONE) {
-		if (event_loop_once(req->nbtsock->event_ctx) != 0) {
+		if (tevent_loop_once(req->nbtsock->event_ctx) != 0) {
 			req->state = NBT_REQUEST_ERROR;
 			req->status = NT_STATUS_UNEXPECTED_NETWORK_ERROR;
 			break;
@@ -508,7 +508,7 @@ _PUBLIC_ NTSTATUS nbt_set_incoming_handler(struct nbt_name_socket *nbtsock,
 {
 	nbtsock->incoming.handler = handler;
 	nbtsock->incoming.private_data = private_data;
-	EVENT_FD_READABLE(nbtsock->fde);
+	TEVENT_FD_READABLE(nbtsock->fde);
 	return NT_STATUS_OK;
 }
 
@@ -522,7 +522,7 @@ NTSTATUS nbt_set_unexpected_handler(struct nbt_name_socket *nbtsock,
 {
 	nbtsock->unexpected.handler = handler;
 	nbtsock->unexpected.private_data = private_data;
-	EVENT_FD_READABLE(nbtsock->fde);
+	TEVENT_FD_READABLE(nbtsock->fde);
 	return NT_STATUS_OK;
 }
 
diff --git a/libcli/smb/smb2_session.c b/libcli/smb/smb2cli_session.c
similarity index 72%
rename from libcli/smb/smb2_session.c
rename to libcli/smb/smb2cli_session.c
index b69f0a2..640eb95 100644
--- a/libcli/smb/smb2_session.c
+++ b/libcli/smb/smb2cli_session.c
@@ -230,4 +230,104 @@ NTSTATUS smb2cli_session_setup_recv(struct tevent_req *req,
 	return status;
 }
 
+struct smb2cli_logoff_state {
+	uint8_t fixed[4];
+};
+
+static void smb2cli_logoff_done(struct tevent_req *subreq);
+
+struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx,
+				       struct tevent_context *ev,
+				       struct smbXcli_conn *conn,
+				       uint32_t timeout_msec,
+				       struct smbXcli_session *session)
+{
+	struct tevent_req *req, *subreq;
+	struct smb2cli_logoff_state *state;
+
+	req = tevent_req_create(mem_ctx, &state,
+				struct smb2cli_logoff_state);
+	if (req == NULL) {
+		return NULL;
+	}
+	SSVAL(state->fixed, 0, 4);
+
+	subreq = smb2cli_req_send(state, ev,
+				  conn, SMB2_OP_LOGOFF,
+				  0, 0, /* flags */
+				  timeout_msec,
+				  0xFEFF, /* pid */
+				  0, /* tid */
+				  session,
+				  state->fixed, sizeof(state->fixed),
+				  NULL, 0);
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
+	}
+	tevent_req_set_callback(subreq, smb2cli_logoff_done, req);
+	return req;
+}
+
+static void smb2cli_logoff_done(struct tevent_req *subreq)
+{
+	struct tevent_req *req =
+		tevent_req_callback_data(subreq,
+		struct tevent_req);
+	struct smb2cli_logoff_state *state =
+		tevent_req_data(req,
+		struct smb2cli_logoff_state);
+	NTSTATUS status;
+	struct iovec *iov;
+	static const struct smb2cli_req_expected_response expected[] = {
+	{
+		.status = NT_STATUS_OK,
+		.body_size = 0x04
+	}
+	};
+
+	status = smb2cli_req_recv(subreq, state, &iov,
+				  expected, ARRAY_SIZE(expected));
+	TALLOC_FREE(subreq);
+	if (tevent_req_nterror(req, status)) {
+		return;
+	}
+	tevent_req_done(req);
+}
 
+NTSTATUS smb2cli_logoff_recv(struct tevent_req *req)
+{
+	return tevent_req_simple_recv_ntstatus(req);
+}
+
+NTSTATUS smb2cli_logoff(struct smbXcli_conn *conn,
+			uint32_t timeout_msec,
+			struct smbXcli_session *session)
+{
+	TALLOC_CTX *frame = talloc_stackframe();
+	struct tevent_context *ev;
+	struct tevent_req *req;
+	NTSTATUS status = NT_STATUS_NO_MEMORY;
+
+	if (smbXcli_conn_has_async_calls(conn)) {
+		/*
+		 * Can't use sync call while an async call is in flight
+		 */
+		status = NT_STATUS_INVALID_PARAMETER;
+		goto fail;
+	}
+	ev = tevent_context_init(frame);
+	if (ev == NULL) {
+		goto fail;
+	}
+	req = smb2cli_logoff_send(frame, ev, conn, timeout_msec, session);
+	if (req == NULL) {
+		goto fail;
+	}
+	if (!tevent_req_poll_ntstatus(req, ev, &status)) {
+		goto fail;
+	}
+	status = smb2cli_logoff_recv(req);
+ fail:
+	TALLOC_FREE(frame);
+	return status;
+}
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index 91dc244..81fb1fd 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -280,4 +280,14 @@ NTSTATUS smb2cli_session_setup_recv(struct tevent_req *req,
 				    struct iovec **recv_iov,
 				    DATA_BLOB *out_security_buffer);
 
+struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx,
+				       struct tevent_context *ev,
+				       struct smbXcli_conn *conn,
+				       uint32_t timeout_msec,
+				       struct smbXcli_session *session);
+NTSTATUS smb2cli_logoff_recv(struct tevent_req *req);
+NTSTATUS smb2cli_logoff(struct smbXcli_conn *conn,
+			uint32_t timeout_msec,
+			struct smbXcli_session *session);
+
 #endif /* _SMBXCLI_BASE_H_ */
diff --git a/libcli/smb/wscript_build b/libcli/smb/wscript_build
index 4e86029..4447005 100755
--- a/libcli/smb/wscript_build
+++ b/libcli/smb/wscript_build
@@ -5,10 +5,10 @@ bld.SAMBA_LIBRARY('cli_smb_common',
 	source='''
 		smb_signing.c smb_seal.c
 		smb2_create_blob.c smb2_signing.c
-		smb2_session.c
 		util.c read_smb.c
 		smbXcli_base.c
 		smb1cli_trans.c
+		smb2cli_session.c
 	''',
 	deps='LIBCRYPTO errors gensec krb5samba LIBASYNC_REQ',
 	public_deps='talloc samba-util',
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 9220778..52ed5d3 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -617,8 +617,7 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
 	     ../libcli/smb/read_smb.o \
 	     ../libcli/smb/smbXcli_base.o \
 	     ../libcli/smb/smb1cli_trans.o \
-	     ../libcli/smb/smb2_session.o \
-	     libsmb/smb2cli_session.o \
+	     ../libcli/smb/smb2cli_session.o \
 	     libsmb/smb2cli_tcon.o \
 	     libsmb/smb2cli_create.o \
 	     ../libcli/smb/smb2_create_blob.o \
diff --git a/source3/include/proto.h b/source3/include/proto.h
index d45ec88..f9306b8 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -536,9 +536,6 @@ void split_domain_user(TALLOC_CTX *mem_ctx,
 		       char **domain,
 		       char **user);
 const char *strip_hostname(const char *s);
-bool tevent_req_poll_ntstatus(struct tevent_req *req,
-			      struct tevent_context *ev,
-			      NTSTATUS *status);
 bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result);
 int timeval_to_msec(struct timeval t);
 char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname);
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 7913ce9..49cd771 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -2262,17 +2262,6 @@ const char *strip_hostname(const char *s)
 	return s;
 }
 
-bool tevent_req_poll_ntstatus(struct tevent_req *req,
-			      struct tevent_context *ev,
-			      NTSTATUS *status)
-{
-	bool ret = tevent_req_poll(req, ev);
-	if (!ret) {
-		*status = map_nt_error_from_unix(errno);
-	}
-	return ret;
-}
-
 bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result)
 {
 	if (!NT_STATUS_IS_OK(err1)) {
diff --git a/source3/libsmb/smb2cli.h b/source3/libsmb/smb2cli.h
index bd6b131..003e0de 100644
--- a/source3/libsmb/smb2cli.h
+++ b/source3/libsmb/smb2cli.h
@@ -24,16 +24,6 @@ struct smbXcli_conn;
 struct smbXcli_session;
 struct cli_state;
 
-struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx,
-				       struct tevent_context *ev,
-				       struct smbXcli_conn *conn,
-				       uint32_t timeout_msec,
-				       struct smbXcli_session *session);
-NTSTATUS smb2cli_logoff_recv(struct tevent_req *req);
-NTSTATUS smb2cli_logoff(struct smbXcli_conn *conn,
-			uint32_t timeout_msec,
-			struct smbXcli_session *session);
-
 struct tevent_req *smb2cli_tcon_send(TALLOC_CTX *mem_ctx,
 				     struct tevent_context *ev,
 				     struct cli_state *cli,
diff --git a/source3/libsmb/smb2cli_close.c b/source3/libsmb/smb2cli_close.c


-- 
Samba Shared Repository


More information about the samba-cvs mailing list