summaryrefslogtreecommitdiff
path: root/source3/smbd/uid.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-05-07 15:51:42 +0200
committerVolker Lendecke <vl@samba.org>2008-05-10 11:17:00 +0200
commitc881c866d656bacb30180b574f3634db26deb37a (patch)
tree6040f06a863feab0042a24a1cd9638580d3329c5 /source3/smbd/uid.c
parent322896f8dd9e7d92fe677178bd131fcfc09319f2 (diff)
downloadsamba-c881c866d656bacb30180b574f3634db26deb37a.tar.gz
samba-c881c866d656bacb30180b574f3634db26deb37a.tar.bz2
samba-c881c866d656bacb30180b574f3634db26deb37a.zip
Next try at making the vuid cache circular
Jeremy, please check! (This used to be commit a34f73521712e3820d417f0d9ed811723b7681d6)
Diffstat (limited to 'source3/smbd/uid.c')
-rw-r--r--source3/smbd/uid.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
index 78dff8ffee..ce8aaa33ea 100644
--- a/source3/smbd/uid.c
+++ b/source3/smbd/uid.c
@@ -65,9 +65,9 @@ static bool check_user_ok(connection_struct *conn, user_struct *vuser,int snum)
bool readonly_share;
NT_USER_TOKEN *token;
- for (i=0;i<conn->vuid_cache.entries && i< VUID_CACHE_SIZE;i++) {
- if (conn->vuid_cache.array[i].vuid == vuser->vuid) {
- ent = &conn->vuid_cache.array[i];
+ for (i=0; i<VUID_CACHE_SIZE; i++) {
+ ent = &conn->vuid_cache.array[i];
+ if (ent->vuid == vuser->vuid) {
conn->read_only = ent->read_only;
conn->admin_user = ent->admin_user;
return(True);
@@ -102,11 +102,11 @@ static bool check_user_ok(connection_struct *conn, user_struct *vuser,int snum)
return False;
}
- i = conn->vuid_cache.entries % VUID_CACHE_SIZE;
- if (conn->vuid_cache.entries < VUID_CACHE_SIZE)
- conn->vuid_cache.entries++;
+ ent = &conn->vuid_cache.array[conn->vuid_cache.next_entry];
+
+ conn->vuid_cache.next_entry =
+ (conn->vuid_cache.next_entry + 1) % VUID_CACHE_SIZE;
- ent = &conn->vuid_cache.array[i];
ent->vuid = vuser->vuid;
ent->read_only = readonly_share;