diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-06-12 13:04:40 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-09-19 09:15:13 +0200 |
commit | 6ed4eebe19bce7c5fcda9a136a494e467f7fa286 (patch) | |
tree | ce20866b3fd20fb2f0f9b2b73637f909b0863302 | |
parent | cd7c24a9b186b5f8eb5c12e098a7fd7c306349c9 (diff) | |
download | samba-6ed4eebe19bce7c5fcda9a136a494e467f7fa286.tar.gz samba-6ed4eebe19bce7c5fcda9a136a494e467f7fa286.tar.xz samba-6ed4eebe19bce7c5fcda9a136a494e467f7fa286.zip |
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 <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | source3/smbd/globals.h | 4 | ||||
-rw-r--r-- | source3/smbd/smbXsrv_session.c | 18 |
2 files changed, 22 insertions, 0 deletions
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; |