]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
rlm_radius: Do less work when replicating
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 21 Apr 2020 01:17:25 +0000 (20:17 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 21 Apr 2020 01:17:25 +0000 (20:17 -0500)
src/modules/rlm_radius/rlm_radius_udp.c

index 913898071f678cdef89522152ed822ca95a612f9..d4a19e7eb187155c2d740789746bece3071be17f 100644 (file)
@@ -2430,6 +2430,18 @@ static void request_conn_release(fr_connection_t *conn, void *preq_to_reset, UNU
        if (!h->tt || (h->tt->num_requests == 0)) h->last_idle = fr_time();
 }
 
+/** Clear out anything associated with the handle from the request
+ *
+ */
+static void request_conn_release_replicate(fr_connection_t *conn, void *preq_to_reset, UNUSED void *uctx)
+{
+       udp_request_t           *u = talloc_get_type_abort(preq_to_reset, udp_request_t);
+
+       rad_assert(!u->ev);
+
+       if (u->packet) udp_request_reset(u);
+}
+
 /** Write out a canned failure
  *
  */
@@ -2648,7 +2660,7 @@ static int mod_thread_instantiate(UNUSED CONF_SECTION const *cs, void *instance,
                                                .connection_notify = thread_conn_notify_replicate,
                                                .request_prioritise = request_prioritise,
                                                .request_mux = request_mux_replicate,
-                                               .request_conn_release = request_conn_release,
+                                               .request_conn_release = request_conn_release_replicate,
                                                .request_complete = request_complete,
                                                .request_fail = request_fail,
                                                .request_free = request_free