From: Michael Tremer Date: Mon, 11 May 2026 15:19:19 +0000 (+0000) Subject: main: Create the source address struct once at startup X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f22e2e8059c5cb6a097388fda274e5b4d54e192;p=zone-sync.git main: Create the source address struct once at startup Signed-off-by: Michael Tremer --- diff --git a/main.c b/main.c index 22c9ba3..3aea732 100644 --- a/main.c +++ b/main.c @@ -52,6 +52,9 @@ typedef struct ctx { const char* primary; isc_sockaddr_t primary_address; + // Source + isc_sockaddr_t source_address; + // Zones const char** zones; unsigned int num_zones; @@ -250,14 +253,10 @@ static int do_transfer(dns_zone_t* zone, uint32_t serial) { xfrtype = dns_rdatatype_axfr; } - isc_sockaddr_t source; - struct in_addr any = { .s_addr = INADDR_ANY }; - isc_sockaddr_fromin(&source, &any, 0); - // Require at least 10 kBit/s to be transmitted over 5 minutes dns_zone_setminxfrratein(zone, 10240, 300); - dns_xfrin_create(zone, xfrtype, &ctx.primary_address, &source, NULL, + dns_xfrin_create(zone, xfrtype, &ctx.primary_address, &ctx.source_address, NULL, DNS_TRANSPORT_NONE, NULL, ctx.tlsctx_cache, ctx.memctx, &xfrin); // Start the transfer @@ -371,6 +370,9 @@ ERROR: } static void run_loop(void* data) { + struct in_addr any = { + .s_addr = INADDR_ANY, + }; int r; DEBUG("Event loop started\n"); @@ -381,6 +383,9 @@ static void run_loop(void* data) { // Create a zone manager dns_zonemgr_create(ctx.memctx, ctx.netmgr, &ctx.zonemgr); + // Create the source address + isc_sockaddr_fromin(&ctx.source_address, &any, 0); + // Create a view r = dns_view_create(ctx.memctx, ctx.loopmgr, ctx.dispatchmgr, dns_rdataclass_in, "default", &ctx.view);