From: Nick Porter Date: Tue, 2 May 2023 12:35:49 +0000 (+0100) Subject: Add a request_cancel callback for LDAP trunk requests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd8998d44d2e23b1c1895935026fbe06ad0922d4;p=thirdparty%2Ffreeradius-server.git Add a request_cancel callback for LDAP trunk requests To ensure queries are not left in the outstanding query tree --- diff --git a/src/lib/ldap/connection.c b/src/lib/ldap/connection.c index accc9932832..fe122c124dc 100644 --- a/src/lib/ldap/connection.c +++ b/src/lib/ldap/connection.c @@ -465,6 +465,20 @@ static void _ldap_trunk_idle_timeout(fr_event_list_t *el, UNUSED fr_time_t now, } } +/** Callback when an LDAP trunk request is cancelled + * + * Ensure the request is removed from the list of outstanding requests + */ +static void ldap_request_cancel(UNUSED fr_connection_t *conn, void *preq, UNUSED fr_trunk_cancel_reason_t reason, + UNUSED void *uctx) { + fr_ldap_query_t *query = talloc_get_type_abort(preq, fr_ldap_query_t); + + if (query->ldap_conn) { + fr_rb_remove(query->ldap_conn->queries, query); + query->ldap_conn = NULL; + } +} + /** Callback to cancel LDAP queries * * Inform the remote LDAP server that we no longer want responses to specific queries. @@ -985,6 +999,7 @@ fr_ldap_thread_trunk_t *fr_thread_ldap_trunk_get(fr_ldap_thread_t *thread, char .connection_notify = ldap_trunk_connection_notify, .request_mux = ldap_trunk_request_mux, .request_demux = ldap_trunk_request_demux, + .request_cancel = ldap_request_cancel, .request_cancel_mux = ldap_request_cancel_mux }, thread->trunk_conf,