diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-05-15 11:50:20 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-05-22 14:03:13 +0200 |
commit | 7dfbb2835f395105982c8e42529c468de3cffcb4 (patch) | |
tree | 07b9780561b941fa9f80d7ebb31c85c029bc9541 /source3/smbd/smb2_sesssetup.c | |
parent | 7749647740e945cf63e3df76545c04129d592429 (diff) | |
download | samba-7dfbb2835f395105982c8e42529c468de3cffcb4.tar.gz samba-7dfbb2835f395105982c8e42529c468de3cffcb4.tar.bz2 samba-7dfbb2835f395105982c8e42529c468de3cffcb4.zip |
s3:smbd: implement SMB2 Tree Connect
For now this only checks if the share is present or not.
metze
Diffstat (limited to 'source3/smbd/smb2_sesssetup.c')
-rw-r--r-- | source3/smbd/smb2_sesssetup.c | 13 |
1 files changed, 13 insertions, 0 deletions
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; |