From 204b250c7b18d567f5dc34e127fc08082059bfaf Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Thu, 1 May 2025 12:05:30 -0400 Subject: [PATCH] use less memory. Don't allocate struct and then over-write it --- src/lib/io/master.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib/io/master.c b/src/lib/io/master.c index 2dd8281586..9d653aa15f 100644 --- a/src/lib/io/master.c +++ b/src/lib/io/master.c @@ -1090,7 +1090,6 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, { size_t len; fr_io_track_t *track, *old; - fr_io_address_t *my_address; *is_dup = false; @@ -1098,17 +1097,21 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, * Allocate a new tracking structure. Most of the time * there are no duplicates, so this is fine. */ - MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64)); - MEM(track->address = my_address = talloc_zero(track, fr_io_address_t)); - - memcpy(my_address, address, sizeof(*address)); - my_address->radclient = client->radclient; - - track->client = client; if (client->connection) { + MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64)); track->address = client->connection->address; + } else { + fr_io_address_t *my_address; + + MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + 64)); + MEM(track->address = my_address = talloc(track, fr_io_address_t)); + + *my_address = *address; + my_address->radclient = client->radclient; } + track->client = client; + track->timestamp = recv_time; track->packets = 1; -- 2.47.2