summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/nsswitch/winbindd.c2
-rw-r--r--source3/nsswitch/winbindd_idmap.c7
-rw-r--r--source3/nsswitch/winbindd_proto.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index 25b69cee6d..ee373c7101 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -154,6 +154,8 @@ static void flush_caches(void)
static void terminate(void)
{
pstring path;
+
+ winbindd_idmap_close();
/* Remove socket file */
snprintf(path, sizeof(path), "%s/%s",
diff --git a/source3/nsswitch/winbindd_idmap.c b/source3/nsswitch/winbindd_idmap.c
index a96111a608..06d442c565 100644
--- a/source3/nsswitch/winbindd_idmap.c
+++ b/source3/nsswitch/winbindd_idmap.c
@@ -240,6 +240,13 @@ BOOL winbindd_idmap_init(void)
return True;
}
+BOOL winbindd_idmap_close(void)
+{
+ if (idmap_tdb)
+ return (tdb_close(idmap_tdb) == 0);
+ return True;
+}
+
/* Dump status information to log file. Display different stuff based on
the debug level:
diff --git a/source3/nsswitch/winbindd_proto.h b/source3/nsswitch/winbindd_proto.h
index 565c08f549..cc936642ed 100644
--- a/source3/nsswitch/winbindd_proto.h
+++ b/source3/nsswitch/winbindd_proto.h
@@ -61,6 +61,7 @@ BOOL winbindd_idmap_get_rid_from_uid(uid_t uid, uint32 *user_rid,
BOOL winbindd_idmap_get_rid_from_gid(gid_t gid, uint32 *group_rid,
struct winbindd_domain **domain);
BOOL winbindd_idmap_init(void);
+BOOL winbindd_idmap_close(void);
void winbindd_idmap_status(void);
/* The following definitions come from nsswitch/winbindd_misc.c */