diff options
Diffstat (limited to 'ares/ares_send.c')
-rw-r--r-- | ares/ares_send.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ares/ares_send.c b/ares/ares_send.c index a5811d36d..be5478df2 100644 --- a/ares/ares_send.c +++ b/ares/ares_send.c @@ -95,7 +95,13 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, /* Initialize query status. */ query->try = 0; - query->server = 0; + + /* Choose the server to send the query to. If rotation is enabled, keep track + * of the next server we want to use. */ + query->server = channel->last_server; + if (channel->rotate == 1) + channel->last_server = (channel->last_server + 1) % channel->nservers; + for (i = 0; i < channel->nservers; i++) { query->server_info[i].skip_server = 0; |