diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2015-10-11 15:34:44 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-10-23 10:21:13 +0200 |
commit | 10c07e188323a2f9824b5e34379f3b1a9b37759e (patch) | |
tree | 8d8951b12cf5bff8d089cc76d0a2f8bd19a68359 /src/providers/data_provider_fo.c | |
parent | 4a4af8e1b6a9bab7c7a34d86055a400376e3829e (diff) | |
download | sssd-10c07e188323a2f9824b5e34379f3b1a9b37759e.tar.gz sssd-10c07e188323a2f9824b5e34379f3b1a9b37759e.tar.xz sssd-10c07e188323a2f9824b5e34379f3b1a9b37759e.zip |
FO: Use refcount to keep track of servers returned to callers
Resolves:
https://fedorahosted.org/sssd/ticket/2829
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/providers/data_provider_fo.c')
-rw-r--r-- | src/providers/data_provider_fo.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/providers/data_provider_fo.c b/src/providers/data_provider_fo.c index cd57340a0..4c4d7b233 100644 --- a/src/providers/data_provider_fo.c +++ b/src/providers/data_provider_fo.c @@ -606,7 +606,7 @@ errno_t be_resolve_server_process(struct tevent_req *subreq, time_t srv_status_change; struct be_svc_callback *callback; - ret = fo_resolve_service_recv(subreq, &state->srv); + ret = fo_resolve_service_recv(subreq, state, &state->srv); switch (ret) { case EOK: if (!state->srv) { @@ -699,7 +699,9 @@ errno_t be_resolve_server_process(struct tevent_req *subreq, return EOK; } -int be_resolve_server_recv(struct tevent_req *req, struct fo_server **srv) +int be_resolve_server_recv(struct tevent_req *req, + TALLOC_CTX *ref_ctx, + struct fo_server **srv) { struct be_resolve_server_state *state = tevent_req_data(req, struct be_resolve_server_state); @@ -707,6 +709,7 @@ int be_resolve_server_recv(struct tevent_req *req, struct fo_server **srv) TEVENT_REQ_RETURN_ON_ERROR(req); if (srv) { + fo_ref_server(ref_ctx, state->srv); *srv = state->srv; } |