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)
{
}
/*
- 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;
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));
return NULL;
}
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
va_start(ap, format);
smb_xvasprintf(&kstr, format, ap);
(retry++ < 5));
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* 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))) {
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
return result;
}
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
for (i=0; i<num_rids; i++) {
struct dom_sid sid;
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
goto skip_save;
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
/* 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;
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
}
}
/* and save it */
- refresh_sequence_number(domain, false);
+ refresh_sequence_number(domain);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
if (wcache->tdb != NULL)
return true;
- db_path = state_path("winbindd_cache.tdb");
+ db_path = wcache_path();
if (db_path == NULL) {
return false;
}
tdb_close(wcache->tdb);
wcache->tdb = NULL;
- db_path = state_path("winbindd_cache.tdb");
+ db_path = wcache_path();
if (db_path == NULL) {
return false;
}
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);
}
return;
}
- db_path = state_path("winbindd_cache.tdb");
+ db_path = wcache_path();
if (db_path == NULL) {
return;
}
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;
}
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;
}