summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-03-12 18:04:01 +0100
committerStefan Metzmacher <metze@samba.org>2012-03-15 21:56:09 +0100
commit148ca9e05f67a0a4fb1d583f7bec53190dea91ab (patch)
tree66ad50f08b1b307fb38644dfc83e060b40080416
parent79a1baec86312d02b9aa67d364eedb80bb13480d (diff)
downloadsamba-148ca9e05f67a0a4fb1d583f7bec53190dea91ab.tar.gz
samba-148ca9e05f67a0a4fb1d583f7bec53190dea91ab.tar.bz2
samba-148ca9e05f67a0a4fb1d583f7bec53190dea91ab.zip
s3:smbd: call file_close_user() before removing tree connects in conn_close_all()
This will help later if we have to handle a SMB2TreeDisconnect different compared to a SMB2SessionLogoff and a TCPDisconnect. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Thu Mar 15 21:56:09 CET 2012 on sn-devel-104
-rw-r--r--source3/smbd/conn_idle.c4
-rw-r--r--source3/smbd/smb2_sesssetup.c2
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);