Small cleanups in frec_src datastucture handling.

This commit is contained in:
Simon Kelley
2020-12-04 18:35:11 +00:00
parent 2024f97297
commit 6a6e06fbb0

View File

@@ -361,7 +361,10 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
if (!daemon->free_frec_src && if (!daemon->free_frec_src &&
daemon->frec_src_count < daemon->ftabsize && daemon->frec_src_count < daemon->ftabsize &&
(daemon->free_frec_src = whine_malloc(sizeof(struct frec_src)))) (daemon->free_frec_src = whine_malloc(sizeof(struct frec_src))))
{
daemon->frec_src_count++; daemon->frec_src_count++;
daemon->free_frec_src->next = NULL;
}
/* If we've been spammed with many duplicates, just drop the query. */ /* If we've been spammed with many duplicates, just drop the query. */
if (daemon->free_frec_src) if (daemon->free_frec_src)
@@ -398,6 +401,7 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
forward->frec_src.orig_id = ntohs(header->id); forward->frec_src.orig_id = ntohs(header->id);
forward->frec_src.dest = *dst_addr; forward->frec_src.dest = *dst_addr;
forward->frec_src.iface = dst_iface; forward->frec_src.iface = dst_iface;
forward->frec_src.next = NULL;
forward->new_id = get_id(); forward->new_id = get_id();
forward->fd = udpfd; forward->fd = udpfd;
memcpy(forward->hash, hash, HASH_SIZE); memcpy(forward->hash, hash, HASH_SIZE);
@@ -2275,14 +2279,14 @@ void free_rfd(struct randfd *rfd)
static void free_frec(struct frec *f) static void free_frec(struct frec *f)
{ {
struct frec_src *src, *tmp; struct frec_src *last;
/* add back to freelist of not the record builtin to every frec. */ /* add back to freelist if not the record builtin to every frec. */
for (src = f->frec_src.next; src; src = tmp) for (last = f->frec_src.next; last && last->next; last = last->next) ;
if (last)
{ {
tmp = src->next; last->next = daemon->free_frec_src;
src->next = daemon->free_frec_src; daemon->free_frec_src = f->frec_src.next;
daemon->free_frec_src = src;
} }
f->frec_src.next = NULL; f->frec_src.next = NULL;