]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4535. [bug] Address race condition in setting / testing of
authorMark Andrews <marka@isc.org>
Tue, 13 Dec 2016 23:31:26 +0000 (10:31 +1100)
committerMark Andrews <marka@isc.org>
Tue, 13 Dec 2016 23:33:13 +0000 (10:33 +1100)
                        DNS_REQUEST_F_SENDING. [RT #43889]

(cherry picked from commit 37a8db0ba480605665f59a8f29a1513913a20dbd)

CHANGES
lib/dns/request.c

diff --git a/CHANGES b/CHANGES
index 4183027c9eeca4649e54fd877589d7348607bd1d..024349ea50909faa286d4875c3447944384dd3d2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4535.  [bug]           Address race condition in setting / testing of
+                       DNS_REQUEST_F_SENDING. [RT #43889]
+
 4534.  [bug]           Only set RD, RA and CD in QUERY responses. [RT #43879]
 
 4533.  [bug]           dns_client_update should terminate on prerequisite
index c2a053a4a074caf6557a29d824a094d6732f1599..5bc1245f96c3cb257af71e8d25ceec3ab04d954a 100644 (file)
@@ -454,10 +454,11 @@ req_send(dns_request_t *request, isc_task_t *task, isc_sockaddr_t *address) {
                sendevent->dscp = request->dscp;
        }
 
+       request->flags |= DNS_REQUEST_F_SENDING;
        result = isc_socket_sendto2(sock, &r, task, address, NULL,
                                    sendevent, 0);
-       if (result == ISC_R_SUCCESS)
-               request->flags |= DNS_REQUEST_F_SENDING;
+       if (result != ISC_R_SUCCESS)
+               request->flags &= ~DNS_REQUEST_F_SENDING;
        return (result);
 }