Lines Matching refs:ns

180 	struct nameserver *ns;	/* the server which we last sent it */  member
402 static void nameserver_send_probe(struct nameserver *const ns);
493 struct nameserver *const ns = (struct nameserver *) arg; in nameserver_prod_callback() local
497 EVDNS_LOCK(ns->base); in nameserver_prod_callback()
498 nameserver_send_probe(ns); in nameserver_prod_callback()
499 EVDNS_UNLOCK(ns->base); in nameserver_prod_callback()
506 nameserver_probe_failed(struct nameserver *const ns) { in nameserver_probe_failed() argument
510 ASSERT_LOCKED(ns->base); in nameserver_probe_failed()
511 (void) evtimer_del(&ns->timeout_event); in nameserver_probe_failed()
512 if (ns->state == 1) { in nameserver_probe_failed()
521 memcpy(&timeout, &ns->base->global_nameserver_probe_initial_timeout, in nameserver_probe_failed()
523 for (i=ns->failed_times; i > 0 && timeout.tv_sec < MAX_PROBE_TIMEOUT; --i) { in nameserver_probe_failed()
536 ns->failed_times++; in nameserver_probe_failed()
538 if (evtimer_add(&ns->timeout_event, &timeout) < 0) { in nameserver_probe_failed()
543 (struct sockaddr *)&ns->address, in nameserver_probe_failed()
549 request_swap_ns(struct request *req, struct nameserver *ns) { in request_swap_ns() argument
550 if (ns && req->ns != ns) { in request_swap_ns()
551 EVUTIL_ASSERT(req->ns->requests_inflight > 0); in request_swap_ns()
552 req->ns->requests_inflight--; in request_swap_ns()
553 ns->requests_inflight++; in request_swap_ns()
555 req->ns = ns; in request_swap_ns()
562 nameserver_failed(struct nameserver *const ns, const char *msg) { in nameserver_failed() argument
564 struct evdns_base *base = ns->base; in nameserver_failed()
571 if (!ns->state) return; in nameserver_failed()
575 (struct sockaddr *)&ns->address, in nameserver_failed()
585 ns->state = 0; in nameserver_failed()
586 ns->failed_times = 1; in nameserver_failed()
588 if (evtimer_add(&ns->timeout_event, in nameserver_failed()
593 (struct sockaddr *)&ns->address, in nameserver_failed()
610 if (req->tx_count == 0 && req->ns == ns) { in nameserver_failed()
622 nameserver_up(struct nameserver *const ns) in nameserver_up() argument
625 ASSERT_LOCKED(ns->base); in nameserver_up()
626 if (ns->state) return; in nameserver_up()
629 (struct sockaddr *)&ns->address, in nameserver_up()
631 evtimer_del(&ns->timeout_event); in nameserver_up()
632 if (ns->probe_request) { in nameserver_up()
633 evdns_cancel_request(ns->base, ns->probe_request); in nameserver_up()
634 ns->probe_request = NULL; in nameserver_up()
636 ns->state = 1; in nameserver_up()
637 ns->failed_times = 0; in nameserver_up()
638 ns->timedout = 0; in nameserver_up()
639 ns->base->global_good_nameservers++; in nameserver_up()
666 req->ns->requests_inflight--; in request_finished()
673 if (req->ns && in request_finished()
674 req->ns->requests_inflight == 0 && in request_finished()
676 event_del(&req->ns->event); in request_finished()
677 evtimer_del(&req->ns->timeout_event); in request_finished()
720 const struct nameserver *const last_ns = req->ns; in request_reissue()
727 if (req->ns == last_ns) { in request_reissue()
756 req->ns = nameserver_pick(base); in evdns_requests_pump_waiting_queue()
757 if (!req->ns) in evdns_requests_pump_waiting_queue()
761 req->ns->requests_inflight++; in evdns_requests_pump_waiting_queue()
921 nameserver_failed(req->ns, msg); in reply_handle()
934 (struct sockaddr *)&req->ns->address, in reply_handle()
941 if (req->handle == req->ns->probe_request) { in reply_handle()
943 req->ns->probe_request = NULL; in reply_handle()
946 nameserver_up(req->ns); in reply_handle()
969 if (req->handle == req->ns->probe_request) in reply_handle()
970 req->ns->probe_request = NULL; /* Avoid double-free */ in reply_handle()
971 nameserver_up(req->ns); in reply_handle()
1386 nameserver_read(struct nameserver *ns) { in nameserver_read() argument
1391 ASSERT_LOCKED(ns->base); in nameserver_read()
1394 const int r = recvfrom(ns->socket, (void*)packet, in nameserver_read()
1398 int err = evutil_socket_geterror(ns->socket); in nameserver_read()
1401 nameserver_failed(ns, in nameserver_read()
1406 (struct sockaddr*)&ns->address, 0)) { in nameserver_read()
1415 ns->timedout = 0; in nameserver_read()
1416 reply_parse(ns->base, packet, r); in nameserver_read()
1487 nameserver_write_waiting(struct nameserver *ns, char waiting) { in nameserver_write_waiting() argument
1488 ASSERT_LOCKED(ns->base); in nameserver_write_waiting()
1489 if (ns->write_waiting == waiting) return; in nameserver_write_waiting()
1491 ns->write_waiting = waiting; in nameserver_write_waiting()
1492 (void) event_del(&ns->event); in nameserver_write_waiting()
1493 event_assign(&ns->event, ns->base->event_base, in nameserver_write_waiting()
1494 ns->socket, EV_READ | (waiting ? EV_WRITE : 0) | EV_PERSIST, in nameserver_write_waiting()
1495 nameserver_ready_callback, ns); in nameserver_write_waiting()
1496 if (event_add(&ns->event, NULL) < 0) { in nameserver_write_waiting()
1500 (struct sockaddr *)&ns->address, in nameserver_write_waiting()
1510 struct nameserver *ns = (struct nameserver *) arg; in nameserver_ready_callback() local
1513 EVDNS_LOCK(ns->base); in nameserver_ready_callback()
1515 ns->choked = 0; in nameserver_ready_callback()
1516 if (!evdns_transmit(ns->base)) { in nameserver_ready_callback()
1517 nameserver_write_waiting(ns, 0); in nameserver_ready_callback()
1521 nameserver_read(ns); in nameserver_ready_callback()
1523 EVDNS_UNLOCK(ns->base); in nameserver_ready_callback()
2188 struct nameserver *ns = req->ns; in evdns_request_timeout_callback() local
2195 nameserver_failed(ns, "request timed out."); in evdns_request_timeout_callback()
2204 req->ns->timedout++; in evdns_request_timeout_callback()
2205 if (req->ns->timedout > req->base->global_max_nameserver_timeout) { in evdns_request_timeout_callback()
2206 req->ns->timedout = 0; in evdns_request_timeout_callback()
2207 nameserver_failed(req->ns, "request timed out."); in evdns_request_timeout_callback()
2238 nameserver_failed(req->ns, evutil_socket_error_to_string(err)); in evdns_request_transmit_to()
2264 if (!req->ns) in evdns_request_transmit()
2270 if (req->ns->choked) { in evdns_request_transmit()
2276 r = evdns_request_transmit_to(req, req->ns); in evdns_request_transmit()
2280 req->ns->choked = 1; in evdns_request_transmit()
2281 nameserver_write_waiting(req->ns, 1); in evdns_request_transmit()
2292 "Setting timeout for request %p, sent to nameserver %p", req, req->ns); in evdns_request_transmit()
2307 struct nameserver *const ns = (struct nameserver *) arg; in nameserver_probe_callback() local
2320 EVDNS_LOCK(ns->base); in nameserver_probe_callback()
2321 ns->probe_request = NULL; in nameserver_probe_callback()
2324 nameserver_up(ns); in nameserver_probe_callback()
2326 nameserver_probe_failed(ns); in nameserver_probe_callback()
2328 EVDNS_UNLOCK(ns->base); in nameserver_probe_callback()
2332 nameserver_send_probe(struct nameserver *const ns) { in nameserver_send_probe() argument
2339 ASSERT_LOCKED(ns->base); in nameserver_send_probe()
2342 (struct sockaddr *)&ns->address, in nameserver_send_probe()
2346 …req = request_new(ns->base, handle, TYPE_A, "google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_ca… in nameserver_send_probe()
2351 ns->probe_request = handle; in nameserver_send_probe()
2353 request_trans_id_set(req, transaction_id_pick(ns->base)); in nameserver_send_probe()
2354 req->ns = ns; in nameserver_send_probe()
2450 req->ns = NULL; in evdns_base_clear_nameservers_and_suspend()
2506 struct nameserver *ns; in evdns_nameserver_add_impl_() local
2517 if (addrlen > (int)sizeof(ns->address)) { in evdns_nameserver_add_impl_()
2522 ns = (struct nameserver *) mm_malloc(sizeof(struct nameserver)); in evdns_nameserver_add_impl_()
2523 if (!ns) return -1; in evdns_nameserver_add_impl_()
2525 memset(ns, 0, sizeof(struct nameserver)); in evdns_nameserver_add_impl_()
2526 ns->base = base; in evdns_nameserver_add_impl_()
2528 evtimer_assign(&ns->timeout_event, ns->base->event_base, nameserver_prod_callback, ns); in evdns_nameserver_add_impl_()
2530 ns->socket = evutil_socket_(address->sa_family, in evdns_nameserver_add_impl_()
2532 if (ns->socket < 0) { err = 1; goto out1; } in evdns_nameserver_add_impl_()
2536 if (bind(ns->socket, in evdns_nameserver_add_impl_()
2546 if (setsockopt(ns->socket, SOL_SOCKET, SO_RCVBUF, in evdns_nameserver_add_impl_()
2554 if (setsockopt(ns->socket, SOL_SOCKET, SO_SNDBUF, in evdns_nameserver_add_impl_()
2562 memcpy(&ns->address, address, addrlen); in evdns_nameserver_add_impl_()
2563 ns->addrlen = addrlen; in evdns_nameserver_add_impl_()
2564 ns->state = 1; in evdns_nameserver_add_impl_()
2565 event_assign(&ns->event, ns->base->event_base, ns->socket, in evdns_nameserver_add_impl_()
2566 EV_READ | EV_PERSIST, nameserver_ready_callback, ns); in evdns_nameserver_add_impl_()
2567 if (!base->disable_when_inactive && event_add(&ns->event, NULL) < 0) { in evdns_nameserver_add_impl_()
2573 evutil_format_sockaddr_port_(address, addrbuf, sizeof(addrbuf)), ns); in evdns_nameserver_add_impl_()
2577 ns->next = ns->prev = ns; in evdns_nameserver_add_impl_()
2578 base->server_head = ns; in evdns_nameserver_add_impl_()
2580 ns->next = base->server_head->next; in evdns_nameserver_add_impl_()
2581 ns->prev = base->server_head; in evdns_nameserver_add_impl_()
2582 base->server_head->next = ns; in evdns_nameserver_add_impl_()
2583 ns->next->prev = ns; in evdns_nameserver_add_impl_()
2591 evutil_closesocket(ns->socket); in evdns_nameserver_add_impl_()
2593 event_debug_unassign(&ns->event); in evdns_nameserver_add_impl_()
2594 mm_free(ns); in evdns_nameserver_add_impl_()
2843 req->ns = issuing_now ? nameserver_pick(base) : NULL; in request_new()
2862 if (req->ns) { in request_submit()
2868 req->ns->requests_inflight++; in request_submit()
2903 if (req->ns) { in evdns_cancel_request()
3771 IP_ADDR_STRING *ns; in load_nameservers_with_getnetworkparams() local
3810 ns = &(fixed->DnsServerList); in load_nameservers_with_getnetworkparams()
3811 while (ns) { in load_nameservers_with_getnetworkparams()
3812 r = evdns_nameserver_ip_add_line(base, ns->IpAddress.String); in load_nameservers_with_getnetworkparams()
3815 (ns->IpAddress.String),(int)GetLastError()); in load_nameservers_with_getnetworkparams()
3819 log(EVDNS_LOG_DEBUG,"Successfully added %s as nameserver",ns->IpAddress.String); in load_nameservers_with_getnetworkparams()
3822 ns = ns->Next; in load_nameservers_with_getnetworkparams()