Do not convert ISC_R_NOSPACE to DNS_R_SERVFAIL too early

The parsing loop needs to process ISC_R_NOSPACE to properly
size the buffer.  If result is still ISC_R_NOSPACE at the end
of the parsing loop set result to DNS_R_SERVFAIL.
This commit is contained in:
Mark Andrews 2021-11-24 11:03:19 +11:00
parent bf0fce265a
commit 08f1cba096

View file

@ -1852,7 +1852,6 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl,
mctx, rdatabuf, &lookup->callbacks);
if (result != ISC_R_SUCCESS) {
isc_buffer_free(&rdatabuf);
result = DNS_R_SERVFAIL;
}
if (size >= 65535) {
break;
@ -1864,6 +1863,7 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl,
} while (result == ISC_R_NOSPACE);
if (result != ISC_R_SUCCESS) {
result = DNS_R_SERVFAIL;
goto failure;
}