summaryrefslogtreecommitdiff
path: root/source4/dsdb
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2013-06-22 19:30:50 +1000
committerStefan Metzmacher <metze@samba.org>2013-07-04 20:13:05 +0200
commit2763cad409430c183f7f1f6f57bc6b38ae616ed9 (patch)
treed332657afdf811befdfc7c2817dd44dbb2718b36 /source4/dsdb
parent2536ee8b640c1257dbe28a977ae0b48a62093d0c (diff)
downloadsamba-2763cad409430c183f7f1f6f57bc6b38ae616ed9.tar.gz
samba-2763cad409430c183f7f1f6f57bc6b38ae616ed9.tar.bz2
samba-2763cad409430c183f7f1f6f57bc6b38ae616ed9.zip
dsdb-ridalloc: Fix RID pools - RID numbers increase too quickly
A patch by Cove Schneider <cove_s@yahoo.com> who reports: I noticed that the RID numbers seem to increase incrementally, then will suddenly jump by 124501. Unless I'm misunderstanding, shouldn't RID pool allocations just be 500 at a time? e.g. Adding accounts one after another on a single test instance here's how they're incrementing (from 4.0.6): 1596 1597 1598 1599 126100 126101 126102 ... 126599 251100 ... 251599 376100 ... The problem is that this complicates using sssd's AD integration, as that it doesn't expect the RIDs to increase in a single domain so quickly. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Thu Jul 4 20:13:05 CEST 2013 on sn-devel-104
Diffstat (limited to 'source4/dsdb')
-rw-r--r--source4/dsdb/samdb/ldb_modules/ridalloc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/ridalloc.c b/source4/dsdb/samdb/ldb_modules/ridalloc.c
index 73ecb03891..c0859d3fbd 100644
--- a/source4/dsdb/samdb/ldb_modules/ridalloc.c
+++ b/source4/dsdb/samdb/ldb_modules/ridalloc.c
@@ -606,7 +606,8 @@ int ridalloc_allocate_rid(struct ldb_module *module, uint32_t *rid, struct ldb_r
/*
* if we are half-exhausted then try to get a new pool.
*/
- if (nridset.next_rid > (prev_pool_hi + prev_pool_lo)/2) {
+ if (nridset.next_rid > (prev_pool_hi + prev_pool_lo)/2 &&
+ nridset.alloc_pool == nridset.prev_pool) {
/*
* if we are the RID Manager,
* we can get a new pool localy.