Do not attempt to connect to the socket as a client if systemd is active, from

Julien Moutinho in GitHub issue 3345.
pull/3358/head
Nicholas Marriott 2022-10-18 15:58:06 +01:00
parent 934f357149
commit 5ce34add77
3 changed files with 13 additions and 0 deletions

View File

@ -284,6 +284,12 @@ client_main(struct event_base *base, int argc, char **argv, uint64_t flags,
log_debug("flags are %#llx", (unsigned long long)client_flags);
/* Initialize the client socket and start the server. */
#ifdef HAVE_SYSTEMD
if (systemd_activated()) {
/* socket-based activation, do not even try to be a client. */
fd = server_start(client_proc, flags, base, 0, NULL);
} else
#endif
fd = client_connect(base, socket_path, client_flags);
if (fd == -1) {
if (errno == ECONNREFUSED) {

View File

@ -423,6 +423,7 @@ void *recallocarray(void *, size_t, size_t, size_t);
#ifdef HAVE_SYSTEMD
/* systemd.c */
int systemd_activated(void);
int systemd_create_socket(int, char **);
#endif

View File

@ -25,6 +25,12 @@
#include "tmux.h"
int
systemd_activated(void)
{
return (sd_listen_fds(0) >= 1);
}
int
systemd_create_socket(int flags, char **cause)
{