The branch, master has been updated
       via  f85167a... s3-winbind: Don't cache queries to builtin and own sam 
domain.
       via  57ebc8a... s3-winbind: Set status before we leave in some msrpc 
functions.
      from  5bdb8b4... Revert "Remove the global char *LastDir."

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f85167a161b078b0ffa23598a4a548fb2fd54cbf
Author: Andreas Schneider <[email protected]>
Date:   Tue Jul 13 15:37:13 2010 +0200

    s3-winbind: Don't cache queries to builtin and own sam domain.

commit 57ebc8af8061e1a81a46300154ac6c4d489b302a
Author: Andreas Schneider <[email protected]>
Date:   Wed Jul 7 14:27:04 2010 +0200

    s3-winbind: Set status before we leave in some msrpc functions.

-----------------------------------------------------------------------

Summary of changes:
 source3/winbindd/winbindd_cache.c |   32 +++++++++++++++++++++++++++++---
 source3/winbindd/winbindd_msrpc.c |    4 ++++
 2 files changed, 33 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/winbindd_cache.c 
b/source3/winbindd/winbindd_cache.c
index a3e202b..631a14d 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -669,6 +669,26 @@ static struct cache_entry *wcache_fetch_raw(char *kstr)
        return centry;
 }
 
+static bool is_my_own_sam_domain(struct winbindd_domain *domain)
+{
+       if (strequal(domain->name, get_global_sam_name()) &&
+            sid_equal(&domain->sid, get_global_sam_sid())) {
+               return true;
+       }
+
+       return false;
+}
+
+static bool is_builtin_domain(struct winbindd_domain *domain)
+{
+       if (strequal(domain->name, "BUILTIN") &&
+           sid_equal(&domain->sid, &global_sid_Builtin)) {
+               return true;
+       }
+
+       return false;
+}
+
 /*
   fetch an entry from the cache, with a varargs key. auto-fetch the sequence
   number and return status
@@ -684,7 +704,9 @@ static struct cache_entry *wcache_fetch(struct 
winbind_cache *cache,
        char *kstr;
        struct cache_entry *centry;
 
-       if (!winbindd_use_cache()) {
+       if (!winbindd_use_cache() ||
+           is_my_own_sam_domain(domain) ||
+           is_builtin_domain(domain)) {
                return NULL;
        }
 
@@ -4681,7 +4703,9 @@ bool wcache_fetch_ndr(TALLOC_CTX *mem_ctx, struct 
winbindd_domain *domain,
        TDB_DATA key, data;
        bool ret = false;
 
-       if (!wcache_opnum_cacheable(opnum)) {
+       if (!wcache_opnum_cacheable(opnum) ||
+           is_my_own_sam_domain(domain) ||
+           is_builtin_domain(domain)) {
                return false;
        }
 
@@ -4737,7 +4761,9 @@ void wcache_store_ndr(struct winbindd_domain *domain, 
uint32_t opnum,
        TDB_DATA key, data;
        uint32_t dom_seqnum, last_check;
 
-       if (!wcache_opnum_cacheable(opnum)) {
+       if (!wcache_opnum_cacheable(opnum) ||
+           is_my_own_sam_domain(domain) ||
+           is_builtin_domain(domain)) {
                return;
        }
 
diff --git a/source3/winbindd/winbindd_msrpc.c 
b/source3/winbindd/winbindd_msrpc.c
index 780a675..714e657 100644
--- a/source3/winbindd/winbindd_msrpc.c
+++ b/source3/winbindd/winbindd_msrpc.c
@@ -438,6 +438,8 @@ static NTSTATUS msrpc_query_user(struct winbindd_domain 
*domain,
        if ( !winbindd_can_contact_domain( domain ) ) {
                DEBUG(10,("query_user: No incoming trust for domain %s\n",
                          domain->name));
+               /* Tell the cache manager not to remember this one */
+               status = NT_STATUS_SYNCHRONIZATION_REQUIRED;
                goto done;
        }
 
@@ -562,6 +564,8 @@ static NTSTATUS msrpc_lookup_useraliases(struct 
winbindd_domain *domain,
        if (!winbindd_can_contact_domain(domain)) {
                DEBUG(10,("msrpc_lookup_useraliases: No incoming trust for 
domain %s\n",
                          domain->name));
+               /* Tell the cache manager not to remember this one */
+               status = NT_STATUS_SYNCHRONIZATION_REQUIRED;
                goto done;
        }
 


-- 
Samba Shared Repository

Reply via email to