From 31b12622cf87dc6f7263550120973b6c56e17ba4 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 7 May 2010 06:54:16 -0700 Subject: When tearing down the connection make sure we close all files before freeing the global context, as we close access to the locking db before freeing the global context. Jeremy. --- source3/smbd/conn.c | 7 +++++++ source3/smbd/smb2_tcon.c | 1 + 2 files changed, 8 insertions(+) (limited to 'source3') diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index 803a775e16..afb7a7fa85 100644 --- a/source3/smbd/conn.c +++ b/source3/smbd/conn.c @@ -181,6 +181,13 @@ bool conn_close_all(struct smbd_server_connection *sconn) /* SMB2 */ if (sconn->smb2.sessions.list && sconn->smb2.sessions.list->tcons.list) { + struct smbd_smb2_tcon *tcon, *tc_next; + + for (tcon = sconn->smb2.sessions.list->tcons.list; + tcon; tcon = tc_next) { + tc_next = tcon->next; + TALLOC_FREE(tcon); + } return true; } return false; diff --git a/source3/smbd/smb2_tcon.c b/source3/smbd/smb2_tcon.c index 0f765d662a..084ded95a4 100644 --- a/source3/smbd/smb2_tcon.c +++ b/source3/smbd/smb2_tcon.c @@ -128,6 +128,7 @@ static int smbd_smb2_tcon_destructor(struct smbd_smb2_tcon *tcon) DLIST_REMOVE(tcon->session->tcons.list, tcon); if (tcon->compat_conn) { + set_current_service(tcon->compat_conn, 0, true); close_cnum(tcon->compat_conn, tcon->session->vuid); } -- cgit