diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/smbd/conn_idle.c | 4 | ||||
-rw-r--r-- | source3/smbd/smb2_sesssetup.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/source3/smbd/conn_idle.c b/source3/smbd/conn_idle.c index dc213ea6be..f33bd8c89f 100644 --- a/source3/smbd/conn_idle.c +++ b/source3/smbd/conn_idle.c @@ -88,12 +88,16 @@ bool conn_idle_all(struct smbd_server_connection *sconn, time_t t) bool conn_close_all(struct smbd_server_connection *sconn) { bool ret = false; + if (sconn->using_smb2) { /* SMB2 */ struct smbd_smb2_session *sess; + for (sess = sconn->smb2.sessions.list; sess; sess = sess->next) { struct smbd_smb2_tcon *tcon, *tc_next; + file_close_user(sconn, sess->vuid); + for (tcon = sess->tcons.list; tcon; tcon = tc_next) { tc_next = tcon->next; TALLOC_FREE(tcon); diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index 96e8d40cdd..9a750eea0d 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -122,6 +122,8 @@ static int smbd_smb2_session_destructor(struct smbd_smb2_session *session) return 0; } + file_close_user(session->sconn, session->vuid); + /* first free all tcons */ while (session->tcons.list) { talloc_free(session->tcons.list); |