void *userdata) {
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id, NULL },
+ { 'a', specifier_architecture, NULL },
{ 'b', specifier_boot_id, NULL },
+ { 'B', specifier_os_build_id, NULL },
{ 'H', specifier_host_name, NULL }, /* We will use specifier_dnssd_host_name(). */
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
+ { 'm', specifier_machine_id, NULL },
{ 'o', specifier_os_id, NULL },
+ { 'v', specifier_kernel_release, NULL },
{ 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
{ 'W', specifier_os_variant_id, NULL },
{}
};
assert(s);
if (isempty(rvalue)) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Service instance name can't be empty. Ignoring.");
- return -EINVAL;
+ s->name_template = mfree(s->name_template);
+ return 0;
}
- r = free_and_strdup(&s->name_template, rvalue);
- if (r < 0)
- return log_oom();
-
- r = specifier_printf(s->name_template, specifier_table, NULL, &name);
- if (r < 0)
- return log_debug_errno(r, "Failed to replace specifiers: %m");
+ r = specifier_printf(rvalue, DNS_LABEL_MAX, specifier_table, NULL, NULL, &name);
+ if (r < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, r,
+ "Invalid service instance name template '%s', ignoring assignment: %m", rvalue);
+ return 0;
+ }
if (!dns_service_name_is_valid(name)) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Service instance name template renders to invalid name '%s'. Ignoring.", name);
- return -EINVAL;
+ log_syntax(unit, LOG_WARNING, filename, line, 0,
+ "Service instance name template '%s' renders to invalid name '%s'. Ignoring assignment.",
+ rvalue, name);
+ return 0;
}
- return 0;
+ return free_and_strdup_warn(&s->name_template, rvalue);
}
int config_parse_dnssd_service_type(
int r;
r = extract_first_word(&rvalue, &word, NULL,
- EXTRACT_UNQUOTE|EXTRACT_CUNESCAPE|EXTRACT_CUNESCAPE_RELAX);
+ EXTRACT_UNQUOTE|EXTRACT_CUNESCAPE|EXTRACT_UNESCAPE_RELAX);
if (r == 0)
break;
if (r == -ENOMEM)
break;
default:
- assert_not_reached("Unknown type of Txt config");
+ assert_not_reached();
}
LIST_INSERT_AFTER(items, txt_data->txt, last, i);