From d6094b160f63fa6c6279de2d1826c444dc0f15e2 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 1 Feb 2012 14:56:43 -0500 Subject: [PATCH] evdns: fix a bug in circular-queue implementation found by Wang Qin --- evdns.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/evdns.c b/evdns.c index 7ad42b74..106ac6de 100644 --- a/evdns.c +++ b/evdns.c @@ -167,6 +167,7 @@ struct request { struct nameserver *ns; /* the server which we last sent it */ /* these objects are kept in a circular list */ + /* XXX We could turn this into a CIRCLEQ. */ struct request *next, *prev; struct event timeout_event; @@ -2472,9 +2473,7 @@ _evdns_nameserver_add_impl(struct evdns_base *base, const struct sockaddr *addre ns->next = base->server_head->next; ns->prev = base->server_head; base->server_head->next = ns; - if (base->server_head->prev == base->server_head) { - base->server_head->prev = ns; - } + ns->next->prev = ns; } base->global_good_nameservers++; -- 2.50.0