diff options
author | Sumit Bose <sbose@redhat.com> | 2010-05-18 12:18:13 +0200 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-05-27 14:44:14 -0400 |
commit | 8bb6aa3fd81a3c195b92270ddf189296abae65eb (patch) | |
tree | 04530219a755ca9c47ec13b8a8981d9e6faaf480 /src/providers/ldap | |
parent | b21813c0bfa513b984fcbab81843c06d093332a5 (diff) | |
download | sssd-8bb6aa3fd81a3c195b92270ddf189296abae65eb.tar.gz sssd-8bb6aa3fd81a3c195b92270ddf189296abae65eb.tar.bz2 sssd-8bb6aa3fd81a3c195b92270ddf189296abae65eb.zip |
Add offline callback to disconnect global SDAP handle
Diffstat (limited to 'src/providers/ldap')
-rw-r--r-- | src/providers/ldap/ldap_common.c | 10 | ||||
-rw-r--r-- | src/providers/ldap/ldap_common.h | 1 | ||||
-rw-r--r-- | src/providers/ldap/ldap_init.c | 7 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/providers/ldap/ldap_common.c b/src/providers/ldap/ldap_common.c index 32057184..1d62b750 100644 --- a/src/providers/ldap/ldap_common.c +++ b/src/providers/ldap/ldap_common.c @@ -6,7 +6,7 @@ Authors: Simo Sorce <ssorce@redhat.com> - Copyright (C) 2008-2009 Red Hat + Copyright (C) 2008-2010 Red Hat This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -674,3 +674,11 @@ done: return ret; } +void sdap_gsh_disconnect_callback(void *pvt) +{ + struct sdap_id_ctx *ctx = talloc_get_type(pvt, struct sdap_id_ctx); + + if (ctx->gsh) { + ctx->gsh->connected = false; + } +} diff --git a/src/providers/ldap/ldap_common.h b/src/providers/ldap/ldap_common.h index 3998e300..53ffd6fe 100644 --- a/src/providers/ldap/ldap_common.h +++ b/src/providers/ldap/ldap_common.h @@ -114,4 +114,5 @@ int groups_get_recv(struct tevent_req *req); /* setup child logging */ int setup_child(struct sdap_id_ctx *ctx); +void sdap_gsh_disconnect_callback(void *pvt); #endif /* _LDAP_COMMON_H_ */ diff --git a/src/providers/ldap/ldap_init.c b/src/providers/ldap/ldap_init.c index 917ece0c..df2956ec 100644 --- a/src/providers/ldap/ldap_init.c +++ b/src/providers/ldap/ldap_init.c @@ -89,6 +89,13 @@ int sssm_ldap_id_init(struct be_ctx *bectx, goto done; } + ret = be_add_offline_cb(ctx, bectx, sdap_gsh_disconnect_callback, ctx, + NULL); + if (ret != EOK) { + DEBUG(1, ("be_add_offline_cb failed.\n")); + goto done; + } + ret = sdap_id_setup_tasks(ctx); if (ret != EOK) { goto done; |