Hi.
I’m doing testing with c-ares 1.15 but encountered some unexpected results. I've made the same single-question query for all scenarios below.
Channel is initialized with:
struct ares_options options;
int optmask = 0;
optmask |= ARES_OPT_SERVERS;
optmask |= ARES_OPT_TIMEOUT;
optmask |= ARES_OPT_TRIES;
options.flags = ARES_FLAG_NOCHECKRESP;
options.servers = NULL;
options.nservers = 0;
options.timeout = 5;
options.tries = 1;
Scenario 1:
One name server was added to channel.
Name server is reachable and responded. ares_callback() is received with status ARES_SUCCESS.
Scenario 2:
One name server was added to channel.
Name server is reachable but does not respond: ares_callback() is received with status ARES_ECONNREFUSED.
Scenario 3:
One name server was added to channel.
Name server is not reachable. ares_callback() is never received.
Scenario 4:
Two name server were added to channel. First server is reachable but does not respond. Second server is reachable and can respond.
ares_callback() is never received.
It seems that once it has to try the second server, the query is never completed or time out.
Question:
Are these expected behavior? I'm expecting ares_callback() to happen in all cases with different statuses.
Regards,
David.
Received on 2020-02-20