}
struct ads_dns_lookup_ns_state {
+ uint32_t timeout;
struct dns_rr_ns *nss;
size_t num_nss;
};
struct tevent_req *ads_dns_lookup_ns_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
- const char *name)
+ const char *name,
+ uint32_t timeout)
{
struct tevent_req *req, *subreq;
struct ads_dns_lookup_ns_state *state;
if (req == NULL) {
return NULL;
}
+ state->timeout = timeout;
subreq = dns_lookup_send(state, ev, NULL, name, DNS_QCLASS_IN,
DNS_QTYPE_NS);
*********************************************************************/
NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx,
- const char *dnsdomain,
- struct dns_rr_ns **nslist,
- size_t *numns)
+ const char *dnsdomain,
+ uint32_t timeout,
+ struct dns_rr_ns **nslist,
+ size_t *numns)
{
struct tevent_context *ev;
struct tevent_req *req;
if (ev == NULL) {
goto fail;
}
- req = ads_dns_lookup_ns_send(ev, ev, dnsdomain);
+ req = ads_dns_lookup_ns_send(ev, ev, dnsdomain, timeout);
if (req == NULL) {
goto fail;
}
size_t *numdcs);
struct tevent_req *ads_dns_lookup_ns_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
- const char *name);
+ const char *name,
+ uint32_t timeout);
NTSTATUS ads_dns_lookup_ns_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
struct dns_rr_ns **nss,
size_t *num_nss);
NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx,
- const char *dnsdomain,
- struct dns_rr_ns **nslist,
- size_t *numns);
+ const char *dnsdomain,
+ uint32_t timeout,
+ struct dns_rr_ns **nslist,
+ size_t *numns);
struct tevent_req *ads_dns_lookup_in_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
status = ads_dns_lookup_ns(ctx,
dnsdomain,
+ lp_get_async_dns_timeout(),
&nameservers,
&ns_count);
if ( !NT_STATUS_IS_OK(status) || (ns_count == 0)) {
status = ads_dns_lookup_ns(ctx,
root_domain,
+ lp_get_async_dns_timeout(),
&nameservers,
&ns_count);