46 lines
2.0 KiB
Diff
46 lines
2.0 KiB
Diff
|
From f7d55cc801611781fbff2817f2fd4a16ec96ca85 Mon Sep 17 00:00:00 2001
|
||
|
From: Mike Yuan <me@yhndnzj.com>
|
||
|
Date: Mon, 17 Jun 2024 07:47:20 +0200
|
||
|
Subject: [PATCH] core/service: fix accept-socket deserialization
|
||
|
|
||
|
Follow-up for 45b1017488cef2a5bacdf82028ce900a311c9a1c
|
||
|
|
||
|
(cherry picked from commit 9f5d8c3da4f505346bd1edfae907a2abcdbdc578)
|
||
|
---
|
||
|
src/core/service.c | 8 ++++----
|
||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/src/core/service.c b/src/core/service.c
|
||
|
index 8ec27c463a..6e81460ad0 100644
|
||
|
--- a/src/core/service.c
|
||
|
+++ b/src/core/service.c
|
||
|
@@ -1351,7 +1351,7 @@ static int service_coldplug(Unit *u) {
|
||
|
service_start_watchdog(s);
|
||
|
|
||
|
if (UNIT_ISSET(s->accept_socket)) {
|
||
|
- Socket* socket = SOCKET(UNIT_DEREF(s->accept_socket));
|
||
|
+ Socket *socket = SOCKET(UNIT_DEREF(s->accept_socket));
|
||
|
|
||
|
if (socket->max_connections_per_source > 0) {
|
||
|
SocketPeer *peer;
|
||
|
@@ -3220,8 +3220,8 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
|
||
|
} else if (streq(key, "accept-socket")) {
|
||
|
Unit *socket;
|
||
|
|
||
|
- if (u->type != UNIT_SOCKET) {
|
||
|
- log_unit_debug(u, "Failed to deserialize accept-socket: unit is not a socket");
|
||
|
+ if (unit_name_to_type(value) != UNIT_SOCKET) {
|
||
|
+ log_unit_debug(u, "Deserialized accept-socket is not a socket unit, ignoring: %s", value);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -3230,7 +3230,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
|
||
|
log_unit_debug_errno(u, r, "Failed to load accept-socket unit '%s': %m", value);
|
||
|
else {
|
||
|
unit_ref_set(&s->accept_socket, u, socket);
|
||
|
- SOCKET(socket)->n_connections++;
|
||
|
+ ASSERT_PTR(SOCKET(socket))->n_connections++;
|
||
|
}
|
||
|
|
||
|
} else if (streq(key, "socket-fd")) {
|