From: Jeremy Allison Date: Fri, 7 May 2010 13:54:16 +0000 (-0700) Subject: When tearing down the connection make sure we close all files before X-Git-Tag: samba-3.6.0pre1~2178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31b12622cf87dc6f7263550120973b6c56e17ba4;p=thirdparty%2Fsamba.git 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. --- diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index 803a775e167..afb7a7fa85b 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 0f765d662a7..084ded95a4b 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); }