]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
ldap: Make ldap_query_timeout work for ldap queries without requests
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 14 Oct 2021 15:52:52 +0000 (10:52 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 14 Oct 2021 21:49:19 +0000 (16:49 -0500)
src/modules/rlm_ldap/rlm_ldap.c

index 6691869145f4a4574d077f0c59112fa75ac3a475..545fe1a90b97a7f3f94af09989d9b20d643df9d4 100644 (file)
@@ -396,10 +396,11 @@ static int uri_part_escape(fr_value_box_t *vb, UNUSED void *uctx)
  */
 static void ldap_query_timeout(UNUSED fr_event_list_t *el, UNUSED fr_time_t now, void *uctx)
 {
-       fr_ldap_query_t         *query = talloc_get_type_abort(uctx, fr_ldap_query_t);
-       request_t               *request = query->request;
+       fr_trunk_request_t      *treq = talloc_get_type_abort(uctx, fr_trunk_request_t);
+       fr_ldap_query_t         *query = talloc_get_type_abort(treq->preq, fr_ldap_query_t);
+       request_t               *request = treq->request;
 
-       RERROR("Timeout waiting for LDAP query");
+       ROPTIONAL(RERROR, ERROR, "Timeout waiting for LDAP query");
        if (query->msgid) {
                fr_trunk_request_signal_cancel(query->treq);
        }
@@ -582,7 +583,7 @@ static xlat_action_t ldap_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out,
        fr_trunk_request_enqueue(&query->treq, query->ttrunk->trunk, request, query, NULL);
 
        fr_event_timer_in(query, unlang_interpret_event_list(request), &query->ev, handle_config->res_timeout,
-                         ldap_query_timeout, query);
+                         ldap_query_timeout, query->treq);
 
        return unlang_xlat_yield(request, ldap_xlat_resume, ldap_xlat_signal, query);
 }