s3:smbXsrv_session: add smbXsrv_session_find_channel()
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Jun 2014 11:04:40 +0000 (13:04 +0200)
committerMichael Adam <obnox@samba.org>
Fri, 19 Sep 2014 07:15:13 +0000 (09:15 +0200)
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>
source3/smbd/globals.h
source3/smbd/smbXsrv_session.c

index 797a5c85515503b6a05c0b8f943cb38cf32f8f7e..d0015d5c458cc9f771bad2da65b9b73d0a249e3a 100644 (file)
@@ -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);
index dd7991c3eab4afb250fafe44606c7e0158b43465..7eca968285338925e4e2eee6f2ded3a6a0beeb08 100644 (file)
@@ -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;