1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r14321: When we have libnscd and winbindd comes (back) online, try to flush the

nscd caches so that NSS-calls can deliver accurate information.

Guenther
(This used to be commit a32a423a0e)
This commit is contained in:
Günther Deschner 2006-03-13 15:13:35 +00:00 committed by Gerald (Jerry) Carter
parent b372fd2cff
commit b97a69dce3
4 changed files with 25 additions and 1 deletions

View File

@ -35,6 +35,7 @@ PASSDB_LIBS=@PASSDB_LIBS@
IDMAP_LIBS=@IDMAP_LIBS@
KRB5LIBS=@KRB5_LIBS@
LDAP_LIBS=@LDAP_LIBS@
NSCD_LIBS=@NSCD_LIBS@
INSTALLCMD=@INSTALL@
INSTALLLIBCMD_SH=@INSTALLLIBCMD_SH@
@ -1180,7 +1181,7 @@ bin/librpc_echo.@SHLIBEXT@: $(RPC_ECHO_OBJ)
bin/winbindd@EXEEXT@: $(WINBINDD_OBJ) @BUILD_POPT@ bin/.dummy
@echo "Linking $@"
@$(CC) $(FLAGS) @PIE_LDFLAGS@ -o $@ $(WINBINDD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
@POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS)
@POPTLIBS@ $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) $(NSCD_LIBS)
# Please don't add .o files to libnss_winbind, libnss_wins, or the pam_winbind
# libraries. Add to the appropriate PICOBJ variable instead.

View File

@ -266,6 +266,7 @@ AC_SUBST(UNINSTALL_CIFSMOUNT)
AC_SUBST(EXTRA_SBIN_PROGS)
AC_SUBST(EXTRA_ALL_TARGETS)
AC_SUBST(CONFIG_LIBS)
AC_SUBST(NSCD_LIBS)
# Set defaults
PIE_CFLAGS=""
@ -3528,6 +3529,8 @@ if test x"$with_ads_support" != x"no"; then
LIBS="$ac_save_LIBS"
fi
AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
#################################################
# check for automount support
AC_MSG_CHECKING(whether to use automount)

View File

@ -29,6 +29,10 @@
#include "winbindd_nss.h"
#ifdef HAVE_LIBNSCD
#include "libnscd.h"
#endif
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_WINBIND

View File

@ -559,6 +559,7 @@ static void child_msg_offline(int msg_type, struct process_id src, void *buf, si
static void child_msg_online(int msg_type, struct process_id src, void *buf, size_t len)
{
struct winbindd_domain *domain;
int ret;
DEBUG(5,("child_msg_online received.\n"));
@ -570,6 +571,21 @@ static void child_msg_online(int msg_type, struct process_id src, void *buf, siz
/* Set our global state as online. */
set_global_winbindd_state_online();
#ifdef HAVE_NSCD_FLUSH_CACHE
/* Flush nscd caches to get accurate new information */
ret = nscd_flush_cache("passwd");
if (ret) {
DEBUG(5,("failed to flush nscd cache for 'passwd' service: %s\n",
error_message(ret)));
}
ret = nscd_flush_cache("group");
if (ret) {
DEBUG(5,("failed to flush nscd cache for 'group' service: %s\n",
error_message(ret)));
}
#endif
/* Mark everything online - delete any negative cache entries
to force an immediate reconnect. */