Lines Matching refs:rctx
134 client_resfind(resctx_t *rctx, dns_fetchresponse_t *event);
435 resctx_t *rctx = resp->arg;
437 REQUIRE(RCTX_VALID(rctx));
439 client_resfind(rctx, resp);
443 start_fetch(resctx_t *rctx) {
447 REQUIRE(rctx->fetch == NULL);
449 if (!rctx->want_cdflag) {
452 if (!rctx->want_validation) {
455 if (rctx->want_tcp) {
460 rctx->view->resolver, dns_fixedname_name(&rctx->name),
461 rctx->type, NULL, NULL, NULL, NULL, 0, fopts, 0, NULL, rctx->qc,
462 NULL, rctx->client->loop, fetch_done, rctx, NULL,
463 rctx->rdataset, rctx->sigrdataset, &rctx->fetch);
469 view_find(resctx_t *rctx, dns_db_t **dbp, dns_dbnode_t **nodep,
472 dns_name_t *name = dns_fixedname_name(&rctx->name);
475 if (rctx->type == dns_rdatatype_rrsig) {
478 type = rctx->type;
481 result = dns_view_find(rctx->view, name, type, 0, 0, false, false, dbp,
482 nodep, foundname, rctx->rdataset,
483 rctx->sigrdataset);
489 client_resfind(resctx_t *rctx, dns_fetchresponse_t *resp) {
505 REQUIRE(RCTX_VALID(rctx));
507 mctx = rctx->view->mctx;
509 name = dns_fixedname_name(&rctx->name);
517 rctx->restarts++;
521 INSIST(!dns_rdataset_isassociated(rctx->rdataset));
522 INSIST(rctx->sigrdataset == NULL ||
523 !dns_rdataset_isassociated(rctx->sigrdataset));
524 result = view_find(rctx, &db, &node, fname);
537 result = start_fetch(rctx);
539 putrdataset(mctx, &rctx->rdataset);
540 if (rctx->sigrdataset != NULL) {
542 &rctx->sigrdataset);
549 INSIST(resp->fetch == rctx->fetch);
550 dns_resolver_destroyfetch(&rctx->fetch);
556 INSIST(resp->rdataset == rctx->rdataset);
557 INSIST(resp->sigrdataset == rctx->sigrdataset);
565 dns_name_t *aname = dns_fixedname_name(&rctx->name);
583 trdataset = rctx->rdataset;
584 ISC_LIST_APPEND(ansname->list, rctx->rdataset, link);
585 rctx->rdataset = NULL;
586 if (rctx->sigrdataset != NULL) {
588 rctx->sigrdataset, link);
589 rctx->sigrdataset = NULL;
591 ISC_LIST_APPEND(rctx->namelist, ansname, link);
616 trdataset = rctx->rdataset;
617 ISC_LIST_APPEND(ansname->list, rctx->rdataset, link);
618 rctx->rdataset = NULL;
619 if (rctx->sigrdataset != NULL) {
621 rctx->sigrdataset, link);
622 rctx->sigrdataset = NULL;
624 ISC_LIST_APPEND(rctx->namelist, ansname, link);
661 ISC_LIST_APPEND(ansname->list, rctx->rdataset, link);
662 ISC_LIST_APPEND(rctx->namelist, ansname, link);
664 rctx->rdataset = NULL;
666 if (rctx->sigrdataset != NULL) {
667 putrdataset(mctx, &rctx
672 if (rctx->rdataset != NULL) {
673 putrdataset(mctx, &rctx->rdataset);
675 if (rctx->sigrdataset != NULL) {
676 putrdataset(mctx, &rctx->sigrdataset);
682 if (rctx->type == dns_rdatatype_any) {
696 rctx->rdataset);
697 if (rctx->rdataset->type != 0) {
699 rctx->rdataset, link);
701 rctx->rdataset = NULL;
708 rctx->rdataset);
713 rctx->rdataset == NULL)
716 &rctx->rdataset);
724 if (rctx->rdataset != NULL) {
725 putrdataset(mctx, &rctx->rdataset);
727 if (rctx->sigrdataset != NULL) {
728 putrdataset(mctx, &rctx->sigrdataset);
739 ISC_LIST_APPEND(rctx->namelist, ansname, link);
754 ISC_LIST_APPEND(ansname->list, rctx->rdataset, link);
755 rctx->rdataset = NULL;
756 if (rctx->sigrdataset != NULL) {
758 rctx->sigrdataset, link);
759 rctx->sigrdataset = NULL;
761 ISC_LIST_APPEND(rctx->namelist, ansname, link);
793 rctx->restarts == rctx->client->max_restarts)
804 INSIST(rctx->rdataset == NULL &&
805 rctx->sigrdataset == NULL);
807 result = getrdataset(mctx, &rctx->rdataset);
808 if (result == ISC_R_SUCCESS && rctx->want_dnssec) {
809 result = getrdataset(mctx, &rctx->sigrdataset);
811 putrdataset(mctx, &rctx->rdataset);
823 while ((name = ISC_LIST_HEAD(rctx->namelist)) != NULL) {
824 ISC_LIST_UNLINK(rctx->namelist, name, link);
825 ISC_LIST_APPEND(rctx->rev->answerlist, name, link);
828 rctx->rev->result = result;
829 rctx->rev->vresult = vresult;
830 isc_async_run(rctx->client->loop, rctx->rev->cb, rctx->rev);
876 resctx_t *rctx = NULL;
903 rctx = isc_mem_get(mctx, sizeof(*rctx));
904 *rctx = (resctx_t){
920 rctx->rdataset = rdataset;
928 rctx->sigrdataset = sigrdataset;
930 dns_fixedname_init(&rctx->name);
931 dns_name_copy(name, dns_fixedname_name(&rctx->name));
933 dns_view_attach(client->view, &rctx->view);
935 rctx->magic = RCTX_MAGIC;
938 result = isc_counter_create(mctx, client->max_queries, &rctx->qc);
943 ISC_LIST_APPEND(client->resctxs, rctx, link);
945 *transp = (dns_clientrestrans_t *)rctx;
946 client_resfind(rctx, NULL);
957 if (rctx->qc != NULL) {
958 isc_counter_detach(&rctx->qc);
960 isc_mem_put(mctx, rctx, sizeof(*rctx));
1027 resctx_t *rctx = NULL;
1033 rctx = (resctx_t *)*transp;
1036 REQUIRE(RCTX_VALID(rctx));
1037 REQUIRE(rctx->fetch == NULL);
1039 client = rctx->client;
1044 dns_view_detach(&rctx->view);
1046 INSIST(ISC_LINK_LINKED(rctx, link));
1047 ISC_LIST_UNLINK(client->resctxs, rctx, link);
1049 INSIST(ISC_LIST_EMPTY(rctx->namelist));
1051 rctx->magic = 0;
1053 if (rctx->qc != NULL) {
1054 isc_counter_detach(&rctx->qc);
1056 isc_mem_put(mctx, rctx, sizeof(*rctx));