bool _dnsrch;
/** timeout for socket connections */
struct timeval _timeout;
-
+ /** \brief only try the first nameserver */
+ bool _fail;
/** keep some things for axfr */
int _socket;
int _axfr_soa_count;
bool ldns_resolver_recursive(ldns_resolver *);
bool ldns_resolver_debug(ldns_resolver *);
bool ldns_resolver_usevc(ldns_resolver *);
+bool ldns_resolver_fail(ldns_resolver *);
size_t ldns_resolver_nameserver_count(ldns_resolver *);
void ldns_resolver_set_retrans(ldns_resolver *, uint8_t);
void ldns_resolver_set_retry(ldns_resolver *, uint8_t);
void ldns_resolver_set_ip6(ldns_resolver *, uint8_t);
+void ldns_resolver_set_fail(ldns_resolver *, bool);
/**
* Prepares the resolver for an axfr query
ldns_pkt_set_answerfrom(reply, ns_array[i]);
ldns_pkt_set_when(reply, ctime((time_t*)&tv_s.tv_sec));
break;
+ } else {
+ if (ldns_resolver_fail(r)) {
+ /* if fail is set bail out, after the first
+ * one */
+ break;
+ }
}
+
}
ldns_buffer_free(qb);
return reply;
return r->_dnsrch;
}
+bool
+ldns_resolver_fail(ldns_resolver *r)
+{
+ return r->_fail;
+}
+
bool
ldns_resolver_defnames(ldns_resolver *r)
{
r->_ip6 = ip6;
}
+void
+ldns_resolver_set_fail(ldns_resolver *r, bool f)
+{
+ r->_fail =f;
+}
+
void
ldns_resolver_set_searchlist_count(ldns_resolver *r, size_t c)
{
ldns_resolver_set_defnames(r, false);
ldns_resolver_set_retry(r, 4);
ldns_resolver_set_retrans(r, 5);
+ ldns_resolver_set_fail(r, false);
r->_timeout.tv_sec = LDNS_DEFAULT_TIMEOUT_SEC;
r->_timeout.tv_usec = LDNS_DEFAULT_TIMEOUT_USEC;