]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/resolve/resolved-conf.c
Merge pull request #20303 from andir/sysconfig-example
[thirdparty/systemd.git] / src / resolve / resolved-conf.c
index b454472e6356c1fe3052e98a6dbf1940e68be8ad..3afaaad9372cdf9a9d7d643fb25ab2683ae71663 100644 (file)
@@ -230,14 +230,14 @@ int config_parse_dnssd_service_name(
                 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 },
                 {}
         };
@@ -251,24 +251,25 @@ int config_parse_dnssd_service_name(
         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(
@@ -347,7 +348,7 @@ int config_parse_dnssd_txt(
                 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)
@@ -394,7 +395,7 @@ int config_parse_dnssd_txt(
                         break;
 
                 default:
-                        assert_not_reached("Unknown type of Txt config");
+                        assert_not_reached();
                 }
 
                 LIST_INSERT_AFTER(items, txt_data->txt, last, i);