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:
parent
b372fd2cff
commit
b97a69dce3
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -29,6 +29,10 @@
|
||||
|
||||
#include "winbindd_nss.h"
|
||||
|
||||
#ifdef HAVE_LIBNSCD
|
||||
#include "libnscd.h"
|
||||
#endif
|
||||
|
||||
#undef DBGC_CLASS
|
||||
#define DBGC_CLASS DBGC_WINBIND
|
||||
|
||||
|
@ -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. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user