summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-06-12 09:30:24 +0200
committerMichael Adam <obnox@samba.org>2014-09-19 09:15:12 +0200
commit80e226ddae0d7f4a8a0d55cd3389620dba556307 (patch)
tree44fa27009b78add3702873063752902b2ab02e00
parentd7e66e59b080f7e29e46a469d1f63ca6183be501 (diff)
downloadsamba-80e226ddae0d7f4a8a0d55cd3389620dba556307.tar.gz
s3:smbXsrv_session: change smbXsrv_session->connection to smbXsrv_session->client
A session will be usable from multiple connections in future. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
-rw-r--r--source3/librpc/idl/smbXsrv.idl2
-rw-r--r--source3/smbd/smbXsrv_session.c13
-rw-r--r--source3/smbd/smbXsrv_tcon.c2
3 files changed, 9 insertions, 8 deletions
diff --git a/source3/librpc/idl/smbXsrv.idl b/source3/librpc/idl/smbXsrv.idl
index ed242c3710a..878b6080588 100644
--- a/source3/librpc/idl/smbXsrv.idl
+++ b/source3/librpc/idl/smbXsrv.idl
@@ -163,7 +163,7 @@ interface smbXsrv
typedef struct {
[ignore] smbXsrv_session_table *table;
[ignore] db_record *db_rec;
- [ignore] smbXsrv_connection *connection;
+ [ignore] smbXsrv_client *client;
uint32 local_id;
[ref] smbXsrv_session_global0 *global;
NTSTATUS status;
diff --git a/source3/smbd/smbXsrv_session.c b/source3/smbd/smbXsrv_session.c
index 32543d53d0a..fa60878f8e0 100644
--- a/source3/smbd/smbXsrv_session.c
+++ b/source3/smbd/smbXsrv_session.c
@@ -1090,7 +1090,7 @@ NTSTATUS smbXsrv_session_create(struct smbXsrv_connection *conn,
session->table = table;
session->idle_time = now;
session->status = NT_STATUS_MORE_PROCESSING_REQUIRED;
- session->connection = conn;
+ session->client = conn->client;
status = smbXsrv_session_global_allocate(table->global.db_ctx,
session,
@@ -1277,7 +1277,6 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
struct smbXsrv_session_table *table;
struct db_record *local_rec = NULL;
struct db_record *global_rec = NULL;
- struct smbXsrv_connection *xconn;
struct smbd_server_connection *sconn = NULL;
NTSTATUS status;
NTSTATUS error = NT_STATUS_OK;
@@ -1289,9 +1288,8 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
table = session->table;
session->table = NULL;
- xconn = session->connection;
- sconn = xconn->client->sconn;
- session->connection = NULL;
+ sconn = session->client->sconn;
+ session->client = NULL;
session->status = NT_STATUS_USER_SESSION_DELETED;
global_rec = session->global->db_rec;
@@ -1376,7 +1374,10 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
file_close_user(sconn, session->compat->vuid);
}
- if (xconn->protocol >= PROTOCOL_SMB2_02) {
+ if (session->tcon_table != NULL) {
+ /*
+ * Note: We only have a tcon_table for SMB2.
+ */
status = smb2srv_tcon_disconnect_all(session);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("smbXsrv_session_logoff(0x%08x): "
diff --git a/source3/smbd/smbXsrv_tcon.c b/source3/smbd/smbXsrv_tcon.c
index 48a938e798c..353f09056f0 100644
--- a/source3/smbd/smbXsrv_tcon.c
+++ b/source3/smbd/smbXsrv_tcon.c
@@ -1143,7 +1143,7 @@ NTSTATUS smb2srv_tcon_create(struct smbXsrv_session *session,
NTTIME now,
struct smbXsrv_tcon **_tcon)
{
- struct server_id id = messaging_server_id(session->connection->msg_ctx);
+ struct server_id id = messaging_server_id(session->client->msg_ctx);
return smbXsrv_tcon_create(session->tcon_table,
PROTOCOL_SMB2_02,