summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/conn.c7
-rw-r--r--source3/smbd/smb2_tcon.c1
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);
}