diff options
-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; |