]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: resolvers: Use resolver's lock in resolv_srvrq_expire_task()
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 18 Jun 2021 07:05:49 +0000 (09:05 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 18 Jun 2021 07:15:35 +0000 (09:15 +0200)
The commit dcac41806 ("BUG/MEDIUM: resolvers: Add a task on servers to check
SRV resolution status") introduced a type. In resolv_srvrq_expire_task()
function, the resolver's lock must be used instead of the resolver itself.

This patch must be backported with the patch above (at least as far as 2.2).

src/resolvers.c

index a068137ff4ef6ead73e8158358bcabbfb9c012e4..c05d2c5b64e3a33ea5755cdfd7c24cfb7f431a6b 100644 (file)
@@ -609,9 +609,9 @@ static struct task *resolv_srvrq_expire_task(struct task *t, void *context, unsi
        if (!tick_is_expired(t->expire, now_ms))
                goto end;
 
-       HA_SPIN_LOCK(DNS_LOCK, &srv->srvrq->resolvers);
+       HA_SPIN_LOCK(DNS_LOCK, &srv->srvrq->resolvers->lock);
        resolv_srvrq_cleanup_srv(srv);
-       HA_SPIN_UNLOCK(DNS_LOCK, &srv->srvrq->resolvers);
+       HA_SPIN_UNLOCK(DNS_LOCK, &srv->srvrq->resolvers->lock);
 
   end:
        return t;