1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00

Merge pull request #18443 from miri64/gcoap_dns/enh/implement-max_age-ttl-algorithm

gcoap_dns: implement Max-Age-based TTL calculation
This commit is contained in:
Martine Lenders 2022-09-19 16:03:46 +02:00 committed by GitHub
commit ff648985c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -732,11 +732,17 @@ static void _resp_handler(const gcoap_request_memo_t *memo, coap_pkt_t *pdu,
switch (coap_get_content_type(pdu)) {
case COAP_FORMAT_DNS_MESSAGE:
case COAP_FORMAT_NONE: {
uint32_t ttl;
uint32_t ttl = 0;
context->res = dns_msg_parse_reply(data, data_len, family,
context->addr_out, &ttl);
if (context->res > 0) {
if (IS_USED(MODULE_DNS_CACHE) && (context->res > 0)) {
uint32_t max_age;
if (coap_opt_get_uint(pdu, COAP_OPT_MAX_AGE, &max_age) < 0) {
max_age = 60;
}
ttl += max_age;
dns_cache_add(_domain_name_from_ctx(context), context->addr_out, context->res, ttl);
}
else if (ENABLE_DEBUG && (context->res < 0)) {