summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2023-01-27 10:31:11 +0000
committerJeremy Harris <jgh146exb@wizmail.org>2023-01-27 10:31:11 +0000
commitf108ec74c278b14363dc9ad1274596f284d21868 (patch)
treecdfe2723a5c839cc68d16be117558aea2dd9ef14
parentf0860486ef8da605996e3330157e331c2452419b (diff)
downloadexim4-f108ec74c278b14363dc9ad1274596f284d21868.tar.gz
Support use-but-not-create of notifier socket
-rw-r--r--doc/doc-docbook/spec.xfpt10
-rw-r--r--src/src/daemon.c7
-rw-r--r--src/src/exim.c2
-rw-r--r--src/src/globals.c1
-rw-r--r--src/src/globals.h1
5 files changed, 17 insertions, 4 deletions
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index 4a6b9bfd0..cc5923069 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -4397,15 +4397,21 @@ It is only relevant when the &%-bd%& (start listening daemon) option is also
given.
Normally the daemon creates this socket, unless a &%-oX%& and &*no*& &%-oP%&
option is also present.
-If this option is given then the socket will not be created. This could be
-required if the system is running multiple daemons.
+.new
+If this option is given then the socket will not be created. This is required
+if the system is running multiple daemons, in which case it should
+be used on all.
+The features supported by the socket will not be available in such cases.
The socket is currently used for
.ilist
fast ramp-up of queue runner processes
.next
+caching compiled regexes
+.next
obtaining a current queue size
.endlist
+.wen
.cmdopt -pd
.cindex "Perl" "starting the interpreter"
diff --git a/src/src/daemon.c b/src/src/daemon.c
index 05d94b188..c3ab735d0 100644
--- a/src/src/daemon.c
+++ b/src/src/daemon.c
@@ -1169,7 +1169,7 @@ const uschar * where;
struct sockaddr_un sa_un = {.sun_family = AF_UNIX};
ssize_t len;
-if (!notifier_socket || !*notifier_socket)
+if (!f.notifier_socket_en)
{
DEBUG(D_any) debug_printf("-oY used so not creating notifier socket\n");
return;
@@ -1180,6 +1180,11 @@ if (override_local_interfaces && !override_pid_file_path)
debug_printf("-oX used without -oP so not creating notifier socket\n");
return;
}
+if (!notifier_socket || !*notifier_socket)
+ {
+ DEBUG(D_any) debug_printf("no name for notifier socket\n");
+ return;
+ }
DEBUG(D_any) debug_printf("creating notifier socket\n");
diff --git a/src/src/exim.c b/src/src/exim.c
index dc082f392..9072ffd54 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -3450,7 +3450,7 @@ on the second character (the one after '-'), to save some effort. */
case 'Y':
if (*argrest) badarg = TRUE;
- else notifier_socket = NULL;
+ else f.notifier_socket_en = FALSE;
break;
/* Unknown -o argument */
diff --git a/src/src/globals.c b/src/src/globals.c
index efe34902a..7af345465 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -280,6 +280,7 @@ struct global_flags f =
.no_mbox_unspool = FALSE,
#endif
.no_multiline_responses = FALSE,
+ .notifier_socket_en = TRUE,
.parse_allow_group = FALSE,
.parse_found_group = FALSE,
diff --git a/src/src/globals.h b/src/src/globals.h
index 5aae73fba..f2e147670 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -246,6 +246,7 @@ extern struct global_flags {
BOOL no_mbox_unspool :1; /* don't unlink files in /scan directory */
#endif
BOOL no_multiline_responses :1; /* For broken clients */
+ BOOL notifier_socket_en :1; /* Permit create of notifier socket */
BOOL parse_allow_group :1; /* Allow group syntax */
BOOL parse_found_group :1; /* In the middle of a group */