diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-06-12 09:30:24 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-09-19 09:15:12 +0200 |
commit | 80e226ddae0d7f4a8a0d55cd3389620dba556307 (patch) | |
tree | 44fa27009b78add3702873063752902b2ab02e00 | |
parent | d7e66e59b080f7e29e46a469d1f63ca6183be501 (diff) | |
download | samba-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.idl | 2 | ||||
-rw-r--r-- | source3/smbd/smbXsrv_session.c | 13 | ||||
-rw-r--r-- | source3/smbd/smbXsrv_tcon.c | 2 |
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, |