diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 3531ffaa17..8dc7641dde 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -460,14 +460,10 @@ MaxConnections= - The maximum number of connections to - simultaneously run services instances for, when - is set. If more concurrent - connections are coming in, they will be refused until at least - one existing connection is terminated. This setting has no - effect on sockets configured with - or datagram sockets. Defaults to - 64. + The maximum number of connections to simultaneously run services instances for, when + is set. If more concurrent connections are coming in, they will be refused + until at least one existing connection is terminated. This setting has no effect on sockets configured + with or datagram sockets. Defaults to 64. @@ -475,7 +471,7 @@ The maximum number of connections for a service per source IP address (in case of IPv4/IPv6), per source CID (in case of AF_VSOCK), or source UID (in case of AF_UNIX). This is very similar to the MaxConnections= - directive above. Disabled by default. + directive above. Defaults to 0, i.e. disabled. diff --git a/src/core/service.c b/src/core/service.c index 61b2b9a955..21f8b47a0c 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1405,8 +1405,8 @@ static int service_collect_fds( UNIT_FOREACH_DEPENDENCY(u, UNIT(s), UNIT_ATOM_TRIGGERED_BY) { _cleanup_free_ int *cfds = NULL; - Socket *sock; int cn_fds; + Socket *sock; sock = SOCKET(u); if (!sock) @@ -1422,18 +1422,8 @@ static int service_collect_fds( if (!rfds) { rfds = TAKE_PTR(cfds); rn_socket_fds = cn_fds; - } else { - int *t; - - t = reallocarray(rfds, rn_socket_fds + cn_fds, sizeof(int)); - if (!t) - return -ENOMEM; - - memcpy(t + rn_socket_fds, cfds, cn_fds * sizeof(int)); - - rfds = t; - rn_socket_fds += cn_fds; - } + } else if (!GREEDY_REALLOC_APPEND(rfds, rn_socket_fds, cfds, cn_fds)) + return -ENOMEM; r = strv_extend_n(&rfd_names, socket_fdname(sock), cn_fds); if (r < 0)