diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-03-03 05:41:43 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-03-06 21:26:05 +0100 |
commit | 6ce72a01abfcffd19313b50e15976582ae84c61c (patch) | |
tree | dcce7f94f5acaef2304f10c6e75d3155d49683cc /source3/smbd/password.c | |
parent | d95dbb86c592590dd5b64d2e307470943260834d (diff) | |
download | samba-6ce72a01abfcffd19313b50e15976582ae84c61c.tar.gz samba-6ce72a01abfcffd19313b50e15976582ae84c61c.tar.bz2 samba-6ce72a01abfcffd19313b50e15976582ae84c61c.zip |
s3:smbd: keep 'num_users' and 'users' directly under smbd_server_connection
The plan is to have users_struct as some kind of low level
abstraction for a smb1/smb2 session, that can be used by SMB_VFS modules.
metze
Diffstat (limited to 'source3/smbd/password.c')
-rw-r--r-- | source3/smbd/password.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/source3/smbd/password.c b/source3/smbd/password.c index 27ba3bd01b..39cde15aaf 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -52,7 +52,7 @@ static user_struct *get_valid_user_struct_internal( if (vuid == UID_FIELD_INVALID) return NULL; - usp=sconn->smb1.sessions.validated_users; + usp=sconn->users; for (;usp;usp=usp->next,count++) { if (vuid == usp->vuid) { switch (server_allocated) { @@ -69,8 +69,7 @@ static user_struct *get_valid_user_struct_internal( break; } if (count > 10) { - DLIST_PROMOTE(sconn->smb1.sessions.validated_users, - usp); + DLIST_PROMOTE(sconn->users, usp); } return usp; } @@ -128,14 +127,15 @@ void invalidate_vuid(struct smbd_server_connection *sconn, uint16 vuid) TALLOC_FREE(vuser->gensec_security); } - DLIST_REMOVE(sconn->smb1.sessions.validated_users, vuser); + DLIST_REMOVE(sconn->users, vuser); + SMB_ASSERT(sconn->num_users > 0); + sconn->num_users--; /* clear the vuid from the 'cache' on each connection, and from the vuid 'owner' of connections */ conn_clear_vuid_caches(sconn, vuid); TALLOC_FREE(vuser); - sconn->smb1.sessions.num_validated_vuids--; } /**************************************************************************** @@ -148,9 +148,8 @@ void invalidate_all_vuids(struct smbd_server_connection *sconn) return; } - while (sconn->smb1.sessions.validated_users != NULL) { - invalidate_vuid(sconn, - sconn->smb1.sessions.validated_users->vuid); + while (sconn->users != NULL) { + invalidate_vuid(sconn, sconn->users->vuid); } } @@ -173,7 +172,7 @@ int register_initial_vuid(struct smbd_server_connection *sconn) user_struct *vuser; /* Limit allowed vuids to 16bits - VUID_OFFSET. */ - if (sconn->smb1.sessions.num_validated_vuids >= 0xFFFF-VUID_OFFSET) { + if (sconn->num_users >= 0xFFFF-VUID_OFFSET) { return UID_FIELD_INVALID; } @@ -201,9 +200,10 @@ int register_initial_vuid(struct smbd_server_connection *sconn) * to NTLMSSP. */ increment_next_vuid(&sconn->smb1.sessions.next_vuid); - sconn->smb1.sessions.num_validated_vuids++; - DLIST_ADD(sconn->smb1.sessions.validated_users, vuser); + sconn->num_users++; + DLIST_ADD(sconn->users, vuser); + return vuser->vuid; } |