s3: winbind: refresh_sequence_number is only ever called with 'false'.
[metze/samba/wip.git] / source3 / winbindd / winbindd_cache.c
index b2c0ae287ed45fb5ef0c7f8d76613d6eee56d821..2bce12da9a7063cdd4e9b3ce87b6cc89335d597c 100644 (file)
@@ -111,6 +111,15 @@ void (*smb_panic_fn)(const char *const why) = smb_panic;
 
 static struct winbind_cache *wcache;
 
+static char *wcache_path(void)
+{
+       /*
+        * Data needs to be kept persistent in state directory for
+        * running with "winbindd offline logon".
+        */
+       return state_path("winbindd_cache.tdb");
+}
+
 /* get the winbind_cache structure */
 static struct winbind_cache *get_cache(struct winbindd_domain *domain)
 {
@@ -509,11 +518,10 @@ static bool store_cache_seqnum( struct winbindd_domain *domain )
 }
 
 /*
-  refresh the domain sequence number. If force is true
-  then always refresh it, no matter how recently we fetched it
+  refresh the domain sequence number on timeout.
 */
 
-static void refresh_sequence_number(struct winbindd_domain *domain, bool force)
+static void refresh_sequence_number(struct winbindd_domain *domain)
 {
        NTSTATUS status;
        unsigned time_diff;
@@ -536,7 +544,7 @@ static void refresh_sequence_number(struct winbindd_domain *domain, bool force)
        time_diff = t - domain->last_seq_check;
 
        /* see if we have to refetch the domain sequence number */
-       if (!force && (time_diff < cache_time) &&
+       if ((time_diff < cache_time) &&
                        (domain->sequence_number != DOM_SEQUENCE_NONE) &&
                        NT_STATUS_IS_OK(domain->last_status)) {
                DEBUG(10, ("refresh_sequence_number: %s time ok\n", domain->name));
@@ -710,7 +718,7 @@ static struct cache_entry *wcache_fetch(struct winbind_cache *cache,
                return NULL;
        }
 
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
 
        va_start(ap, format);
        smb_xvasprintf(&kstr, format, ap);
@@ -1558,7 +1566,7 @@ do_query:
                 (retry++ < 5));
 
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -1670,7 +1678,7 @@ do_query:
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -1775,7 +1783,7 @@ do_query:
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -1890,7 +1898,7 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
 
        if (domain->online &&
            (NT_STATUS_IS_OK(status) || NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED))) {
@@ -2004,7 +2012,7 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -2229,7 +2237,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
                return result;
        }
 
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
 
        for (i=0; i<num_rids; i++) {
                struct dom_sid sid;
@@ -2390,7 +2398,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -2508,7 +2516,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
                goto skip_save;
 
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -2661,7 +2669,7 @@ static NTSTATUS lookup_useraliases(struct winbindd_domain *domain,
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -2797,7 +2805,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -2820,7 +2828,7 @@ skip_save:
 /* find the sequence number for a domain */
 static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32_t *seq)
 {
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
 
        *seq = domain->sequence_number;
 
@@ -2998,7 +3006,7 @@ do_query:
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -3070,7 +3078,7 @@ do_query:
                }
        }
        /* and save it */
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -3195,7 +3203,7 @@ bool init_wcache(void)
        if (wcache->tdb != NULL)
                return true;
 
-       db_path = state_path("winbindd_cache.tdb");
+       db_path = wcache_path();
        if (db_path == NULL) {
                return false;
        }
@@ -3247,7 +3255,7 @@ bool initialize_winbindd_cache(void)
                tdb_close(wcache->tdb);
                wcache->tdb = NULL;
 
-               db_path = state_path("winbindd_cache.tdb");
+               db_path = wcache_path();
                if (db_path == NULL) {
                        return false;
                }
@@ -3335,7 +3343,7 @@ void cache_name2sid(struct winbindd_domain *domain,
                    const char *domain_name, const char *name,
                    enum lsa_SidType type, const struct dom_sid *sid)
 {
-       refresh_sequence_number(domain, false);
+       refresh_sequence_number(domain);
        wcache_save_name_to_sid(domain, NT_STATUS_OK, domain_name, name,
                                sid, type);
 }
@@ -3384,7 +3392,7 @@ void wcache_flush_cache(void)
                return;
        }
 
-       db_path = state_path("winbindd_cache.tdb");
+       db_path = wcache_path();
        if (db_path == NULL) {
                return;
        }
@@ -4281,7 +4289,7 @@ int winbindd_validate_cache(void)
        DEBUG(10, ("winbindd_validate_cache: replacing panic function\n"));
        smb_panic_fn = validate_panic;
 
-       tdb_path = state_path("winbindd_cache.tdb");
+       tdb_path = wcache_path();
        if (tdb_path == NULL) {
                goto done;
        }
@@ -4352,7 +4360,7 @@ int winbindd_validate_cache_nobackup(void)
        DEBUG(10, ("winbindd_validate_cache: replacing panic function\n"));
        smb_panic_fn = validate_panic;
 
-       tdb_path = state_path("winbindd_cache.tdb");
+       tdb_path = wcache_path();
        if (tdb_path == NULL) {
                goto err_panic_restore;
        }