diff options
author | Jeremy Allison <jra@samba.org> | 2010-05-07 06:54:16 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-05-07 06:54:16 -0700 |
commit | 31b12622cf87dc6f7263550120973b6c56e17ba4 (patch) | |
tree | 0ca1c8068f3970eef8e9d979171e89f43d3f7515 /source3 | |
parent | adf4833792f36653bc8a854aeff47598a046dad6 (diff) | |
download | samba-31b12622cf87dc6f7263550120973b6c56e17ba4.tar.gz samba-31b12622cf87dc6f7263550120973b6c56e17ba4.tar.bz2 samba-31b12622cf87dc6f7263550120973b6c56e17ba4.zip |
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.
Diffstat (limited to 'source3')
-rw-r--r-- | source3/smbd/conn.c | 7 | ||||
-rw-r--r-- | source3/smbd/smb2_tcon.c | 1 |
2 files changed, 8 insertions, 0 deletions
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); } |