]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
reuse more memory
authorAlan T. DeKok <aland@freeradius.org>
Wed, 11 Dec 2019 21:12:01 +0000 (16:12 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 11 Dec 2019 21:14:31 +0000 (16:14 -0500)
src/lib/io/master.c

index af62454e2b83ba2d95bc98552b5cf72284adec83..fbb19964d3fd3073fd81267a8987f5f9c62595f3 100644 (file)
@@ -829,12 +829,14 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client,
                if (!track) {
                        MEM(track = talloc_zero(client, fr_io_track_t));
                        talloc_get_type_abort(track, fr_io_track_t);
+                       MEM(track->address = talloc_zero(track, fr_io_address_t));
                } else {
                        fr_dlist_remove(&client->thread->track_list, track);
+                       fr_io_address_t *old = track->address;
                        memset(track, 0, sizeof(*track));
+                       track->address = old;
                }
 
-               MEM(track->address = talloc_zero(track, fr_io_address_t));
                memcpy(track->address, address, sizeof(*address));
                track->address->radclient = client->radclient;
 
@@ -914,6 +916,8 @@ static void track_free(fr_io_track_t *track)
 {
        fr_io_thread_t *thread = track->client->thread;
 
+       if (track->ev) (void) fr_event_timer_delete(thread->el, &track->ev);
+
        /*
         *      Keep most recently used elements around.  But
         *      limit them to ~1000 entries.