}
static ldns_status
-svcparam_echconfig2buffer_str(ldns_buffer *output, size_t sz, uint8_t *data)
+svcparam_ech2buffer_str(ldns_buffer *output, size_t sz, uint8_t *data)
{
size_t str_sz = ldns_b64_ntop_calculate_size(sz);
int written;
/* No svcparams is just fine. Just nothing to print. */
return LDNS_STATUS_OK;
- for (dp = data; dp + 4 < data + sz; dp = next_dp) {
+ for (dp = data; dp + 4 <= data + sz; dp = next_dp) {
ldns_svcparam_key key = ldns_read_uint16(dp);
uint16_t val_sz = ldns_read_uint16(dp + 2);
case LDNS_SVCPARAM_KEY_IPV4HINT:
st = svcparam_ipv4hint2buffer_str(output, val_sz, dp);
break;
- case LDNS_SVCPARAM_KEY_ECHCONFIG:
- st = svcparam_echconfig2buffer_str(output, val_sz, dp);
+ case LDNS_SVCPARAM_KEY_ECH:
+ st = svcparam_ech2buffer_str(output, val_sz, dp);
break;
case LDNS_SVCPARAM_KEY_IPV6HINT:
st = svcparam_ipv6hint2buffer_str(output, val_sz, dp);
LDNS_SVCPARAM_KEY_NO_DEFAULT_ALPN = 2,
LDNS_SVCPARAM_KEY_PORT = 3,
LDNS_SVCPARAM_KEY_IPV4HINT = 4,
- LDNS_SVCPARAM_KEY_ECHCONFIG = 5,
+ LDNS_SVCPARAM_KEY_ECH = 5,
LDNS_SVCPARAM_KEY_IPV6HINT = 6,
LDNS_SVCPARAM_KEY_LAST_KEY = 6,
LDNS_SVCPARAM_KEY_RESERVED = 65535
}
static ldns_status
-parse_svcparam_echconfig(const char **s, uint8_t **dp, uint8_t *eod)
+parse_svcparam_ech(const char **s, uint8_t **dp, uint8_t *eod)
{
bool quoted = false;
const char *b64_str;
, { "no-default-alpn", 15 }
, { "port" , 4 }
, { "ipv4hint" , 8 }
- , { "echconfig" , 9 }
+ , { "ech" , 3 }
, { "ipv6hint" , 8 } };
static const size_t svcparam_key_defs_len = sizeof(svcparam_key_defs)
return LDNS_STATUS_OK;
}
}
+ /* Also allow "echconfig" from earlier draft versions. */
+ if (len == 9 && !strncmp(key_str, "echconfig", 9)) {
+ *key = LDNS_SVCPARAM_KEY_ECH;
+ return LDNS_STATUS_OK;
+ }
if (len < 4 || len > 8 || strncmp(key_str, "key", 3))
return LDNS_STATUS_SYNTAX_SVCPARAM_KEY_ERR;
case LDNS_SVCPARAM_KEY_IPV4HINT:
st = parse_svcparam_ipv4hint(s, dp, eod);
break;
- case LDNS_SVCPARAM_KEY_ECHCONFIG:
- st = parse_svcparam_echconfig(s, dp, eod);
+ case LDNS_SVCPARAM_KEY_ECH:
+ st = parse_svcparam_ech(s, dp, eod);
break;
case LDNS_SVCPARAM_KEY_IPV6HINT:
st = parse_svcparam_ipv6hint(s, dp, eod);