Lines Matching defs:ns

179 	struct nameserver *ns;	/* the server which we last sent it */
398 static void nameserver_send_probe(struct nameserver *const ns);
489 struct nameserver *const ns = (struct nameserver *) arg;
493 EVDNS_LOCK(ns->base);
494 nameserver_send_probe(ns);
495 EVDNS_UNLOCK(ns->base);
502 nameserver_probe_failed(struct nameserver *const ns) {
506 ASSERT_LOCKED(ns->base);
507 (void) evtimer_del(&ns->timeout_event);
508 if (ns->state == 1) {
517 memcpy(&timeout, &ns->base->global_nameserver_probe_initial_timeout,
519 for (i=ns->failed_times; i > 0 && timeout.tv_sec < MAX_PROBE_TIMEOUT; --i) {
532 ns->failed_times++;
534 if (evtimer_add(&ns->timeout_event, &timeout) < 0) {
539 (struct sockaddr *)&ns->address,
545 request_swap_ns(struct request *req, struct nameserver *ns) {
546 if (ns && req->ns != ns) {
547 EVUTIL_ASSERT(req->ns->requests_inflight > 0);
548 req->ns->requests_inflight--;
549 ns->requests_inflight++;
551 req->ns = ns;
558 nameserver_failed(struct nameserver *const ns, const char *msg) {
560 struct evdns_base *base = ns->base;
567 if (!ns->state) return;
571 (struct sockaddr *)&ns->address,
581 ns->state = 0;
582 ns->failed_times = 1;
584 if (evtimer_add(&ns->timeout_event,
589 (struct sockaddr *)&ns->address,
606 if (req->tx_count == 0 && req->ns == ns) {
618 nameserver_up(struct nameserver *const ns)
621 ASSERT_LOCKED(ns->base);
622 if (ns->state) return;
625 (struct sockaddr *)&ns->address,
627 evtimer_del(&ns->timeout_event);
628 if (ns->probe_request) {
629 evdns_cancel_request(ns->base, ns->probe_request);
630 ns->probe_request = NULL;
632 ns->state = 1;
633 ns->failed_times = 0;
634 ns->timedout = 0;
635 ns->base->global_good_nameservers++;
662 req->ns->requests_inflight--;
669 if (req->ns &&
670 req->ns->requests_inflight == 0 &&
672 event_del(&req->ns->event);
673 evtimer_del(&req->ns->timeout_event);
716 const struct nameserver *const last_ns = req->ns;
723 if (req->ns == last_ns) {
752 req->ns = nameserver_pick(base);
753 if (!req->ns)
757 req->ns->requests_inflight++;
904 nameserver_failed(req->ns, msg);
917 (struct sockaddr *)&req->ns->address,
924 if (req->handle == req->ns->probe_request) {
926 req->ns->probe_request = NULL;
929 nameserver_up(req->ns);
952 if (req->handle == req->ns->probe_request)
953 req->ns->probe_request = NULL; /* Avoid double-free */
954 nameserver_up(req->ns);
1373 nameserver_read(struct nameserver *ns) {
1378 ASSERT_LOCKED(ns->base);
1381 const int r = recvfrom(ns->socket, (void*)packet,
1385 int err = evutil_socket_geterror(ns->socket);
1388 nameserver_failed(ns,
1393 (struct sockaddr*)&ns->address, 0)) {
1402 ns->timedout = 0;
1403 reply_parse(ns->base, packet, r);
1474 nameserver_write_waiting(struct nameserver *ns, char waiting) {
1475 ASSERT_LOCKED(ns->base);
1476 if (ns->write_waiting == waiting) return;
1478 ns->write_waiting = waiting;
1479 (void) event_del(&ns->event);
1480 event_assign(&ns->event, ns->base->event_base,
1481 ns->socket, EV_READ | (waiting ? EV_WRITE : 0) | EV_PERSIST,
1482 nameserver_ready_callback, ns);
1483 if (event_add(&ns->event, NULL) < 0) {
1487 (struct sockaddr *)&ns->address,
1497 struct nameserver *ns = (struct nameserver *) arg;
1500 EVDNS_LOCK(ns->base);
1502 ns->choked = 0;
1503 if (!evdns_transmit(ns->base)) {
1504 nameserver_write_waiting(ns, 0);
1508 nameserver_read(ns);
1510 EVDNS_UNLOCK(ns->base);
2174 struct nameserver *ns = req->ns;
2181 nameserver_failed(ns, "request timed out.");
2190 req->ns->timedout++;
2191 if (req->ns->timedout > req->base->global_max_nameserver_timeout) {
2192 req->ns->timedout = 0;
2193 nameserver_failed(req->ns, "request timed out.");
2224 nameserver_failed(req->ns, evutil_socket_error_to_string(err));
2250 if (!req->ns)
2256 if (req->ns->choked) {
2262 r = evdns_request_transmit_to(req, req->ns);
2266 req->ns->choked = 1;
2267 nameserver_write_waiting(req->ns, 1);
2277 "Setting timeout for request %p, sent to nameserver %p", req, req->ns);
2292 struct nameserver *const ns = (struct nameserver *) arg;
2305 EVDNS_LOCK(ns->base);
2306 ns->probe_request = NULL;
2309 nameserver_up(ns);
2311 nameserver_probe_failed(ns);
2313 EVDNS_UNLOCK(ns->base);
2317 nameserver_send_probe(struct nameserver *const ns) {
2324 ASSERT_LOCKED(ns->base);
2327 (struct sockaddr *)&ns->address,
2331 req = request_new(ns->base, handle, TYPE_A, "google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, ns);
2336 ns->probe_request = handle;
2338 request_trans_id_set(req, transaction_id_pick(ns->base));
2339 req->ns = ns;
2435 req->ns = NULL;
2491 struct nameserver *ns;
2502 if (addrlen > (int)sizeof(ns->address)) {
2507 ns = (struct nameserver *) mm_malloc(sizeof(struct nameserver));
2508 if (!ns) return -1;
2510 memset(ns, 0, sizeof(struct nameserver));
2511 ns->base = base;
2513 evtimer_assign(&ns->timeout_event, ns->base->event_base, nameserver_prod_callback, ns);
2515 ns->socket = evutil_socket_(address->sa_family,
2517 if (ns->socket < 0) { err = 1; goto out1; }
2521 if (bind(ns->socket,
2530 memcpy(&ns->address, address, addrlen);
2531 ns->addrlen = addrlen;
2532 ns->state = 1;
2533 event_assign(&ns->event, ns->base->event_base, ns->socket,
2534 EV_READ | EV_PERSIST, nameserver_ready_callback, ns);
2535 if (!base->disable_when_inactive && event_add(&ns->event, NULL) < 0) {
2541 evutil_format_sockaddr_port_(address, addrbuf, sizeof(addrbuf)), ns);
2545 ns->next = ns->prev = ns;
2546 base->server_head = ns;
2548 ns->next = base->server_head->next;
2549 ns->prev = base->server_head;
2550 base->server_head->next = ns;
2551 ns->next->prev = ns;
2559 evutil_closesocket(ns->socket);
2561 event_debug_unassign(&ns->event);
2562 mm_free(ns);
2811 req->ns = issuing_now ? nameserver_pick(base) : NULL;
2830 if (req->ns) {
2836 req->ns->requests_inflight++;
2871 if (req->ns) {
3707 IP_ADDR_STRING *ns;
3746 ns = &(fixed->DnsServerList);
3747 while (ns) {
3748 r = evdns_nameserver_ip_add_line(base, ns->IpAddress.String);
3751 (ns->IpAddress.String),(int)GetLastError());
3755 log(EVDNS_LOG_DEBUG,"Successfully added %s as nameserver",ns->IpAddress.String);
3758 ns = ns->Next;