mirror of
https://github.com/valitydev/gentoo-overlay.git
synced 2024-11-06 01:45:19 +00:00
f5329cc314
* Added missing erlang ebuild * Added missing files for erang-21.8.1-r1
91 lines
2.3 KiB
Diff
91 lines
2.3 KiB
Diff
From 04ace92c33a699f75445dc99c30d521311aba826 Mon Sep 17 00:00:00 2001
|
|
From: Steve Arnold <nerdboy@gentoo.org>
|
|
Date: Mon, 6 Aug 2018 16:38:30 -0700
|
|
Subject: [PATCH] Add daemon-mode pid file creation when not configured for
|
|
systemd
|
|
|
|
Signed-off-by: Steve Arnold <nerdboy@gentoo.org>
|
|
---
|
|
erts/epmd/src/epmd.c | 39 ++++++++++++++++++++++++++++++++++++++-
|
|
erts/epmd/src/epmd.h | 3 +++
|
|
2 files changed, 41 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/erts/epmd/src/epmd.c b/erts/epmd/src/epmd.c
|
|
index 44e997e609..c74888a1ee 100644
|
|
--- a/erts/epmd/src/epmd.c
|
|
+++ b/erts/epmd/src/epmd.c
|
|
@@ -40,6 +40,37 @@ static int check_relaxed(void);
|
|
#ifdef __WIN32__
|
|
static int has_console(void);
|
|
#endif
|
|
+#ifndef HAVE_SYSTEMD_DAEMON
|
|
+static int create_pidfile(void);
|
|
+static const char *pidfile = EPMD_PIDFILE;
|
|
+#endif
|
|
+
|
|
+#ifndef HAVE_SYSTEMD_DAEMON
|
|
+static int create_pidfile(void)
|
|
+{
|
|
+ int fd;
|
|
+
|
|
+ unlink(pidfile);
|
|
+
|
|
+ /* open the pidfile */
|
|
+ fd = open(pidfile, O_WRONLY|O_CREAT|O_EXCL, 0644);
|
|
+ if (fd >= 0) {
|
|
+ FILE *f;
|
|
+
|
|
+ /* write our pid to it */
|
|
+ f = fdopen(fd, "w");
|
|
+ if (f != NULL) {
|
|
+ fprintf(f, "%d\n", getpid());
|
|
+ fclose(f);
|
|
+ /* leave the fd open */
|
|
+ return 0;
|
|
+ }
|
|
+ close(fd);
|
|
+ }
|
|
+
|
|
+ return -1;
|
|
+}
|
|
+#endif /* (no) HAVE_SYSTEMD_DAEMON */
|
|
|
|
#ifdef DONT_USE_MAIN
|
|
|
|
@@ -340,6 +371,13 @@ static void run_daemon(EpmdVars *g)
|
|
|
|
umask(0);
|
|
|
|
+#ifndef HAVE_SYSTEMD_DAEMON
|
|
+ if (create_pidfile() < 0) {
|
|
+ dbg_perror(g,"could not create pidfile %s", pidfile);
|
|
+ epmd_cleanup_exit(g,1);
|
|
+ }
|
|
+#endif /* HAVE_SYSTEMD_DAEMON */
|
|
+
|
|
for (fd = 0; fd < g->max_conn ; fd++) /* close all files ... */
|
|
close(fd);
|
|
/* Syslog on linux will try to write to whatever if we dont
|
|
@@ -614,4 +652,3 @@ static int check_relaxed(void)
|
|
char* port_str = getenv("ERL_EPMD_RELAXED_COMMAND_CHECK");
|
|
return (port_str != NULL) ? 1 : 0;
|
|
}
|
|
-
|
|
diff --git a/erts/epmd/src/epmd.h b/erts/epmd/src/epmd.h
|
|
index cffcd4ae7a..e53322acf5 100644
|
|
--- a/erts/epmd/src/epmd.h
|
|
+++ b/erts/epmd/src/epmd.h
|
|
@@ -20,6 +20,9 @@
|
|
|
|
/* The port number is defined in a makefile */
|
|
|
|
+/* The name and path to the pid file */
|
|
+#define EPMD_PIDFILE "/var/run/epmd.pid"
|
|
+
|
|
/* Definitions of message codes */
|
|
|
|
/* Registration and queries */
|
|
--
|
|
2.17.0
|
|
|