From 7385a076f8fd351472d37d9363304948e88f9f99 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 7 Sep 2006 03:44:05 +0000 Subject: [PATCH] r18199: Allow winbindd to delete a saf_ entry if it knows it can't talk to it. Jeremy. --- source/libsmb/namequery.c | 24 ++++++++++++++++++++++++ source/nsswitch/winbindd_cm.c | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/source/libsmb/namequery.c b/source/libsmb/namequery.c index 5cd09fd04f..aeeeb3372c 100644 --- a/source/libsmb/namequery.c +++ b/source/libsmb/namequery.c @@ -77,6 +77,30 @@ BOOL saf_store( const char *domain, const char *servername ) return ret; } +BOOL saf_delete( const char *domain, const char *servername ) +{ + char *key; + BOOL ret = False; + + if ( !domain || !servername ) { + DEBUG(2,("saf_delete: Refusing to store empty domain or servername!\n")); + return False; + } + + if ( !gencache_init() ) + return False; + + key = saf_key(domain); + ret = gencache_del(key); + + if (ret) { + DEBUG(10,("saf_delete: domain = [%s], server = [%s]\n", + domain, servername)); + } + SAFE_FREE( key ); + return ret; +} + /**************************************************************************** ****************************************************************************/ diff --git a/source/nsswitch/winbindd_cm.c b/source/nsswitch/winbindd_cm.c index 3072ca2a39..1aab918f69 100644 --- a/source/nsswitch/winbindd_cm.c +++ b/source/nsswitch/winbindd_cm.c @@ -167,8 +167,12 @@ void winbind_add_failed_connection_entry(const struct winbindd_domain *domain, NTSTATUS result) { add_failed_connection_entry(domain->name, server, result); + /* If this was the saf name for the last thing we talked to, + remove it. */ + saf_delete(domain->name, server); if (*domain->alt_name) { add_failed_connection_entry(domain->alt_name, server, result); + saf_delete(domain->alt_name, server); } } -- 2.34.1