diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-05-11 16:37:21 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-06-15 09:13:22 +0200 |
commit | 82929a4bdd87f878db880c31317cca4305a65207 (patch) | |
tree | 01eea874fcc8f1e948667cfbce12f81cf7fb6943 /source4/ldap_server | |
parent | ace49db796a121bd35741e86e3e0aa98be48e81f (diff) | |
download | samba-82929a4bdd87f878db880c31317cca4305a65207.tar.gz |
s4:ldap_server: introduce a ldapsrv_call_destructor()
This makes sure that a call doesn't become an stale
member of the conn->pending_calls list.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/ldap_server')
-rw-r--r-- | source4/ldap_server/ldap_server.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c index 347a17dde5a..062c3fc4b56 100644 --- a/source4/ldap_server/ldap_server.c +++ b/source4/ldap_server/ldap_server.c @@ -254,6 +254,18 @@ failed: return -1; } +static int ldapsrv_call_destructor(struct ldapsrv_call *call) +{ + if (call->conn == NULL) { + return 0; + } + + DLIST_REMOVE(call->conn->pending_calls, call); + + call->conn = NULL; + return 0; +} + static struct tevent_req *ldapsrv_process_call_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct tevent_queue *call_queue, @@ -504,6 +516,7 @@ static void ldapsrv_call_read_done(struct tevent_req *subreq) ldapsrv_terminate_connection(conn, "no memory"); return; } + talloc_set_destructor(call, ldapsrv_call_destructor); call->conn = conn; |