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);
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;