diff --git a/src/dnsmasq.h b/src/dnsmasq.h index 914f469..360c226 100644 --- a/src/dnsmasq.h +++ b/src/dnsmasq.h @@ -664,6 +664,7 @@ struct frec { union mysockaddr source; union all_addr dest; unsigned int iface, log_id; + int fd; unsigned short orig_id; struct frec_src *next; } frec_src; @@ -671,7 +672,7 @@ struct frec { struct randfd *rfd4; struct randfd *rfd6; unsigned short new_id; - int fd, forwardall, flags; + int forwardall, flags; time_t time; unsigned char *hash[HASH_SIZE]; #ifdef HAVE_DNSSEC diff --git a/src/forward.c b/src/forward.c index 7a95ddf..43d0ae7 100644 --- a/src/forward.c +++ b/src/forward.c @@ -402,8 +402,8 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr, forward->frec_src.dest = *dst_addr; forward->frec_src.iface = dst_iface; forward->frec_src.next = NULL; + forward->frec_src.fd = udpfd; forward->new_id = get_id(); - forward->fd = udpfd; memcpy(forward->hash, hash, HASH_SIZE); forward->forwardall = 0; forward->flags = fwd_flags; @@ -1300,7 +1300,7 @@ void reply_query(int fd, int family, time_t now) dump_packet(DUMP_REPLY, daemon->packet, (size_t)nn, NULL, &src->source); #endif - send_from(forward->fd, option_bool(OPT_NOWILD) || option_bool (OPT_CLEVERBIND), daemon->packet, nn, + send_from(src->fd, option_bool(OPT_NOWILD) || option_bool (OPT_CLEVERBIND), daemon->packet, nn, &src->source, &src->dest, src->iface); if (option_bool(OPT_EXTRALOG) && src != &forward->frec_src)