]> git.ipfire.org Git - zone-sync.git/commitdiff
main: Create the source address struct once at startup
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 11 May 2026 15:19:19 +0000 (15:19 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 11 May 2026 15:19:19 +0000 (15:19 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
main.c

diff --git a/main.c b/main.c
index 22c9ba336a8a374d82699b0b2cef1f61fe00a837..3aea732dc86224416666806655d32f603f6c0a6b 100644 (file)
--- 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);