[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