From: Daan De Meyer Date: Thu, 19 Oct 2023 14:41:04 +0000 (+0200) Subject: socket: Add one more helper X-Git-Tag: v255-rc1~182^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e49b211073bed96be0dcb9846a3a94f85498fe76;p=thirdparty%2Fsystemd.git socket: Add one more helper --- diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c index 5e5b715e906..e77e9e5ccd2 100644 --- a/src/core/dbus-socket.c +++ b/src/core/dbus-socket.c @@ -44,30 +44,12 @@ static int property_get_listen( LIST_FOREACH(port, p, s->ports) { _cleanup_free_ char *address = NULL; - const char *a; - switch (p->type) { - case SOCKET_SOCKET: { - r = socket_address_print(&p->address, &address); - if (r) - return r; - - a = address; - break; - } - - case SOCKET_SPECIAL: - case SOCKET_MQUEUE: - case SOCKET_FIFO: - case SOCKET_USB_FUNCTION: - a = p->path; - break; - - default: - assert_not_reached(); - } + r = socket_port_to_address(p, &address); + if (r < 0) + return r; - r = sd_bus_message_append(reply, "(ss)", socket_port_type_to_string(p), a); + r = sd_bus_message_append(reply, "(ss)", socket_port_type_to_string(p), address); if (r < 0) return r; } diff --git a/src/core/socket.c b/src/core/socket.c index 62ce29076ee..bb7164d255b 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2866,6 +2866,40 @@ static const char *socket_sub_state_to_string(Unit *u) { return socket_state_to_string(SOCKET(u)->state); } +int socket_port_to_address(const SocketPort *p, char **ret) { + _cleanup_free_ char *address = NULL; + int r; + + assert(p); + assert(ret); + + switch (p->type) { + case SOCKET_SOCKET: { + r = socket_address_print(&p->address, &address); + if (r < 0) + return r; + + break; + } + + case SOCKET_SPECIAL: + case SOCKET_MQUEUE: + case SOCKET_FIFO: + case SOCKET_USB_FUNCTION: + address = strdup(p->path); + if (!address) + return -ENOMEM; + break; + + default: + assert_not_reached(); + } + + *ret = TAKE_PTR(address); + + return 0; +} + const char* socket_port_type_to_string(SocketPort *p) { assert(p); diff --git a/src/core/socket.h b/src/core/socket.h index 0b82141659a..0983e8c9d0f 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -180,6 +180,8 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(SocketPort*, socket_port_free); void socket_free_ports(Socket *s); +int socket_port_to_address(const SocketPort *s, char **ret); + int socket_load_service_unit(Socket *s, int cfd, Unit **ret); char *socket_fdname(Socket *s);