int addr_bucket;
bool new_addresses_added;
dns_rdatatype_t rdtype;
- unsigned int findoptions;
dns_adbnamehooklist_t *hookhead;
INSIST(DNS_ADBNAME_VALID(adbname));
rdtype = rdataset->type;
INSIST((rdtype == dns_rdatatype_a) || (rdtype == dns_rdatatype_aaaa));
- if (rdtype == dns_rdatatype_a) {
- findoptions = DNS_ADBFIND_INET;
- } else {
- findoptions = DNS_ADBFIND_INET6;
- }
addr_bucket = DNS_ADB_INVALIDBUCKET;
new_addresses_added = false;
INSIST(nh == NULL);
nh = new_adbnamehook(adb, NULL);
- if (nh == NULL) {
- adbname->partial_result |= findoptions;
- result = ISC_R_NOMEMORY;
- goto fail;
- }
-
foundentry = find_entry_and_lock(adb, &sockaddr, &addr_bucket,
now);
if (foundentry == NULL) {
dns_adbentry_t *entry;
entry = new_adbentry(adb);
- if (entry == NULL) {
- adbname->partial_result |= findoptions;
- result = ISC_R_NOMEMORY;
- goto fail;
- }
-
entry->sockaddr = sockaddr;
entry->refcnt = 1;
entry->nh = 1;
result = dns_rdataset_next(rdataset);
}
-fail:
if (nh != NULL) {
free_adbnamehook(adb, &nh);
}
* Possibilities: Note that these are not always exclusive.
*
* No name found. In this case, allocate a new name header and
- * an initial namehook or two. If any of these allocations
- * fail, clean up and return ISC_R_NOMEMORY.
+ * an initial namehook or two.
*
* Name found, valid addresses present. Allocate one addrinfo
* structure for each found and append it to the linked list
*/
find = new_adbfind(adb);
- if (find == NULL) {
- return (ISC_R_NOMEMORY);
- }
find->port = port;
check_stale_name(adb, bucket, now);
adbname = new_adbname(adb, name);
- if (adbname == NULL) {
- RUNTIME_CHECK(!free_adbfind(adb, &find));
- result = ISC_R_NOMEMORY;
- goto out;
- }
link_name(adb, bucket, adbname);
if (FIND_HINTOK(find)) {
adbname->flags |= NAME_HINT_OK;
}
fetch = new_adbfetch(adb);
- if (fetch == NULL) {
- result = ISC_R_NOMEMORY;
- goto cleanup;
- }
fetch->depth = depth;
/*
goto unlock;
}
li = new_adblameinfo(adb, qname, qtype);
- if (li == NULL) {
- result = ISC_R_NOMEMORY;
- goto unlock;
- }
-
li->lame_timer = expire_time;
ISC_LIST_PREPEND(addr->entry->lameinfo, li, plink);
* We don't know anything about this address.
*/
entry = new_adbentry(adb);
- if (entry == NULL) {
- result = ISC_R_NOMEMORY;
- goto unlock;
- }
entry->sockaddr = *sa;
link_entry(adb, bucket, entry);
DP(ENTER_LEVEL, "findaddrinfo: new entry %p", entry);