Support use-but-not-create of notifier socket
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 27 Jan 2023 10:31:11 +0000 (10:31 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 27 Jan 2023 10:31:11 +0000 (10:31 +0000)
doc/doc-docbook/spec.xfpt
src/src/daemon.c
src/src/exim.c
src/src/globals.c
src/src/globals.h

index 4a6b9bfd06d55e3af6aed79f61b4f40b2345b691..cc59230698cd8af1bc59f403923edeaf0fca40e9 100644 (file)
@@ -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"
index 05d94b1885743b670467cb13b256dd1de8af7cdb..c3ab735d05e471c57a834fb1a979f3fd30588dc7 100644 (file)
@@ -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");
 
index dc082f3924a197cb67a3c6e3362434b6ede42288..9072ffd5440f63037b46284e2347527f7e7390a1 100644 (file)
@@ -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 */
index efe34902a2586bb137913a2549e0faee26c3ef44..7af345465cdfd511df52b59da543bbba0f30f259 100644 (file)
@@ -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,
index 5aae73fba5b3504ade393a0a5feea12e2aee2c84..f2e1476708034664107541f80ed97434cfe7783e 100644 (file)
@@ -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 */