diff options
author | boyang <boyang@suse.de> | 2009-01-07 11:02:04 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2009-01-07 11:02:04 -0800 |
commit | 45c67ff244a4a40b8fd099b3cbdc135a527c30eb (patch) | |
tree | b59b251214e500b2121ff2b38a810fb4dd5d0a52 | |
parent | 00a401aa3e7598f69244de5bad57b5dc6d64e369 (diff) | |
download | samba-45c67ff244a4a40b8fd099b3cbdc135a527c30eb.tar.gz samba-45c67ff244a4a40b8fd099b3cbdc135a527c30eb.tar.bz2 samba-45c67ff244a4a40b8fd099b3cbdc135a527c30eb.zip |
refresh sequence number as soon as possible when domain->sequence_number == -1 or domain->last_status is not ok.
-rw-r--r-- | source3/winbindd/winbindd_cache.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index 1ae7966bc3..863852e837 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -486,7 +486,9 @@ 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 (!force && (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)); goto done; } @@ -495,8 +497,11 @@ static void refresh_sequence_number(struct winbindd_domain *domain, bool force) /* this will update the timestamp as well */ status = fetch_cache_seqnum( domain, t ); - if ( NT_STATUS_IS_OK(status) ) - goto done; + if (NT_STATUS_IS_OK(status) && + (domain->sequence_number != DOM_SEQUENCE_NONE) && + NT_STATUS_IS_OK(domain->last_status)) { + goto done; + } /* important! make sure that we know if this is a native mode domain or not. And that we can contact it. */ |