diff options
author | Michael Adam <obnox@samba.org> | 2009-11-13 15:51:33 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2009-11-13 16:19:31 +0100 |
commit | d2673253e3f3fead7b467b4e359482a4e8875fc9 (patch) | |
tree | a47a183f2651ec4d90c7905fa3e0aea84525c15d /source3 | |
parent | 5b75201dbb9f2e6799fd5c3eee8da6230caee96c (diff) | |
download | samba-d2673253e3f3fead7b467b4e359482a4e8875fc9.tar.gz samba-d2673253e3f3fead7b467b4e359482a4e8875fc9.tar.bz2 samba-d2673253e3f3fead7b467b4e359482a4e8875fc9.zip |
s3:smbd: make idmap cache persistent for "ldapsam:trusted".
This stores the mappings found in the idmap cache (which lives
inside gencache). This cache is already read in sid_to_Xid()
and Xid_to_sid() for ldapsam:trusted, this fills the opposite
direction, massively reducing the number of ldap roundtrips
across smbd restarts.
Michael
Diffstat (limited to 'source3')
-rw-r--r-- | source3/passdb/pdb_ldap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index d4a2fbe0fc..7fda72ef21 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -1038,6 +1038,7 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, /* We've got a uid, feed the cache */ uid_t uid = strtoul(temp, NULL, 10); store_uid_sid_cache(pdb_get_user_sid(sampass), uid); + idmap_cache_set_sid2uid(pdb_get_user_sid(sampass), uid); } } @@ -2449,6 +2450,7 @@ for gidNumber(%lu)\n",(unsigned long)map->gid)); if (lp_parm_bool(-1, "ldapsam", "trusted", false)) { store_gid_sid_cache(&map->sid, map->gid); + idmap_cache_set_sid2gid(&map->sid, map->gid); } TALLOC_FREE(ctx); @@ -4967,6 +4969,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods, id->gid = strtoul(gid_str, NULL, 10); *type = (enum lsa_SidType)strtoul(value, NULL, 10); + idmap_cache_set_sid2gid(sid, id->gid); ret = True; goto done; } @@ -4983,6 +4986,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods, id->uid = strtoul(value, NULL, 10); *type = SID_NAME_USER; + idmap_cache_set_sid2uid(sid, id->uid); ret = True; done: |