From 6ed4eebe19bce7c5fcda9a136a494e467f7fa286 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 12 Jun 2014 13:04:40 +0200 Subject: s3:smbXsrv_session: add smbXsrv_session_find_channel() This function can check if a smbXsrv_connection is already bound to a smbXsrv_session. Signed-off-by: Stefan Metzmacher Reviewed-by: Michael Adam --- source3/smbd/globals.h | 4 ++++ source3/smbd/smbXsrv_session.c | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 797a5c8551..d0015d5c45 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -523,6 +523,10 @@ NTSTATUS smbXsrv_session_create(struct smbXsrv_connection *conn, NTTIME now, struct smbXsrv_session **_session); NTSTATUS smbXsrv_session_update(struct smbXsrv_session *session); +struct smbXsrv_channel_global0; +NTSTATUS smbXsrv_session_find_channel(const struct smbXsrv_session *session, + const struct smbXsrv_connection *conn, + struct smbXsrv_channel_global0 **_c); NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session); NTSTATUS smbXsrv_session_logoff_all(struct smbXsrv_connection *conn); NTSTATUS smb1srv_session_table_init(struct smbXsrv_connection *conn); diff --git a/source3/smbd/smbXsrv_session.c b/source3/smbd/smbXsrv_session.c index dd7991c3ea..7eca968285 100644 --- a/source3/smbd/smbXsrv_session.c +++ b/source3/smbd/smbXsrv_session.c @@ -1280,6 +1280,24 @@ NTSTATUS smbXsrv_session_update(struct smbXsrv_session *session) return NT_STATUS_OK; } +NTSTATUS smbXsrv_session_find_channel(const struct smbXsrv_session *session, + const struct smbXsrv_connection *conn, + struct smbXsrv_channel_global0 **_c) +{ + uint32_t i; + + for (i=0; i < session->global->num_channels; i++) { + struct smbXsrv_channel_global0 *c = &session->global->channels[i]; + + if (c->connection == conn) { + *_c = c; + return NT_STATUS_OK; + } + } + + return NT_STATUS_USER_SESSION_DELETED; +} + NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session) { struct smbXsrv_session_table *table; -- cgit