diff options
Diffstat (limited to 'source3/smbd')
-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); } |