summaryrefslogtreecommitdiff
path: root/src/load-fragment.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/load-fragment.c')
-rw-r--r--src/load-fragment.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/load-fragment.c b/src/load-fragment.c
index 3146186843..30fbb57f6b 100644
--- a/src/load-fragment.c
+++ b/src/load-fragment.c
@@ -251,7 +251,7 @@ static int config_parse_listen(
if (streq(lvalue, "ListenFIFO")) {
p->type = SOCKET_FIFO;
- if (!(p->path = strdup(rvalue))) {
+ if (!(p->path = unit_full_printf(UNIT(s), rvalue))) {
free(p);
return -ENOMEM;
}
@@ -261,7 +261,7 @@ static int config_parse_listen(
} else if (streq(lvalue, "ListenSpecial")) {
p->type = SOCKET_SPECIAL;
- if (!(p->path = strdup(rvalue))) {
+ if (!(p->path = unit_full_printf(UNIT(s), rvalue))) {
free(p);
return -ENOMEM;
}
@@ -272,7 +272,7 @@ static int config_parse_listen(
p->type = SOCKET_MQUEUE;
- if (!(p->path = strdup(rvalue))) {
+ if (!(p->path = unit_full_printf(UNIT(s), rvalue))) {
free(p);
return -ENOMEM;
}
@@ -280,18 +280,30 @@ static int config_parse_listen(
path_kill_slashes(p->path);
} else if (streq(lvalue, "ListenNetlink")) {
+ char *k;
+ int r;
+
p->type = SOCKET_SOCKET;
+ k = unit_full_printf(UNIT(s), rvalue);
+ r = socket_address_parse_netlink(&p->address, k);
+ free(k);
- if (socket_address_parse_netlink(&p->address, rvalue) < 0) {
+ if (r < 0) {
log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue);
free(p);
return 0;
}
} else {
+ char *k;
+ int r;
+
p->type = SOCKET_SOCKET;
+ k = unit_full_printf(UNIT(s), rvalue);
+ r = socket_address_parse(&p->address, k);
+ free(k);
- if (socket_address_parse(&p->address, rvalue) < 0) {
+ if (r < 0) {
log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue);
free(p);
return 0;