From 7dfbb2835f395105982c8e42529c468de3cffcb4 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 15 May 2009 11:50:20 +0200 Subject: s3:smbd: implement SMB2 Tree Connect For now this only checks if the share is present or not. metze --- source3/smbd/smb2_sesssetup.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'source3/smbd/smb2_sesssetup.c') diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index a7fef4ab2f..fafda24ca4 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -115,6 +115,11 @@ static int smbd_smb2_session_destructor(struct smbd_smb2_session *session) return 0; } + /* first free all tcons */ + while (session->tcons.list) { + talloc_free(session->tcons.list); + } + idr_remove(session->conn->smb2.sessions.idtree, session->vuid); DLIST_REMOVE(session->conn->smb2.sessions.list, session); @@ -150,6 +155,14 @@ static NTSTATUS smbd_smb2_session_setup(struct smbd_smb2_request *req, return NT_STATUS_INSUFFICIENT_RESOURCES; } session->vuid = id; + + session->tcons.idtree = idr_init(session); + if (session->tcons.idtree == NULL) { + return NT_STATUS_NO_MEMORY; + } + session->tcons.limit = 0x00FFFFFF; + session->tcons.list = NULL; + DLIST_ADD_END(req->conn->smb2.sessions.list, session, struct smbd_smb2_session *); session->conn = req->conn; -- cgit