Move notifier socket to general availability
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 18 Feb 2020 16:47:56 +0000 (16:47 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Wed, 19 Feb 2020 00:19:06 +0000 (00:19 +0000)
src/src/daemon.c
src/src/globals.c
src/src/globals.h
src/src/macros.h
src/src/queue.c

index aedd3fb..b6c27ff 100644 (file)
@@ -973,7 +973,6 @@ exim_exit(EXIT_SUCCESS, US"daemon");
 }
 
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
 /*************************************************
 *      Listener socket for local work prompts   *
 *************************************************/
@@ -1057,16 +1056,17 @@ for (struct cmsghdr * cp = CMSG_FIRSTHDR(&msg);
 buf[sz] = 0;
 switch (buf[0])
   {
+#ifdef EXPERIMENTAL_QUEUE_RAMP
   case NOTIFY_MSG_QRUN:
     /* this should be a message_id */
     DEBUG(D_queue_run)
       debug_printf("%s: qrunner trigger: %s\n", __FUNCTION__, buf+1);
     memcpy(queuerun_msgid, buf+1, MESSAGE_ID_LENGTH+1);
     return TRUE;
+#endif /*EXPERIMENTAL_QUEUE_RAMP*/
   }
 return FALSE;
 }
-#endif /*EXPERIMENTAL_QUEUE_RAMP*/
 
 
 /*************************************************
@@ -1514,10 +1514,7 @@ if (f.background_daemon)
 /* We are now in the disconnected, daemon process (unless debugging). Set up
 the listening sockets if required. */
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
-if (queue_fast_ramp)
-  daemon_notifier_socket();
-#endif
+daemon_notifier_socket();
 
 if (f.daemon_listen && !f.inetd_wait_mode)
   {
@@ -2048,10 +2045,8 @@ for (;;)
 
           /* Close any open listening sockets in the child */
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
          if (daemon_notifier_fd >= 0)
            (void) close(daemon_notifier_fd);
-#endif
           for (int sk = 0; sk < listen_socket_count; sk++)
             (void) close(listen_sockets[sk]);
 
@@ -2184,10 +2179,8 @@ for (;;)
     fd_set select_listen;
 
     FD_ZERO(&select_listen);
-#ifdef EXPERIMENTAL_QUEUE_RAMP
     if (daemon_notifier_fd >= 0)
       FD_SET(daemon_notifier_fd, &select_listen);
-#endif
     for (int sk = 0; sk < listen_socket_count; sk++)
       {
       FD_SET(listen_sockets[sk], &select_listen);
@@ -2244,7 +2237,6 @@ for (;;)
 
       if (!select_failed)
        {
-#ifdef EXPERIMENTAL_QUEUE_RAMP
        if (  daemon_notifier_fd >= 0
           && FD_ISSET(daemon_notifier_fd, &select_listen))
          {
@@ -2252,7 +2244,6 @@ for (;;)
          sigalrm_seen = daemon_notification();
          break;        /* to top of daemon loop */
          }
-#endif
         for (int sk = 0; sk < listen_socket_count; sk++)
           if (FD_ISSET(listen_sockets[sk], &select_listen))
             {
index 458ab48..a06aa5c 100644 (file)
@@ -740,9 +740,7 @@ cut_t   cutthrough = {
   .nrcpt =             0,                              /* number of addresses */
 };
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
 int    daemon_notifier_fd     = -1;
-#endif
 uschar *daemon_smtp_port       = US"smtp";
 int     daemon_startup_retries = 9;
 int     daemon_startup_sleep   = 30;
index 88751f3..760863a 100644 (file)
@@ -447,9 +447,7 @@ typedef struct {
 } cut_t;
 extern cut_t cutthrough;               /* Deliver-concurrently */
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
 extern int     daemon_notifier_fd;     /* Unix socket for notifications */
-#endif
 extern uschar *daemon_smtp_port;       /* Can be a list of ports */
 extern int     daemon_startup_retries; /* Number of times to retry */
 extern int     daemon_startup_sleep;   /* Sleep between retries */
index ca61f53..7f50dbb 100644 (file)
@@ -1100,9 +1100,7 @@ should not be one active. */
 #define SVFMT_TAINT_NOCHK      BIT(2)
 
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
-# define NOTIFIER_SOCKET_NAME  "exim_daemon_notify"
-# define NOTIFY_MSG_QRUN       1       /* Notify message types */
-#endif
+#define NOTIFIER_SOCKET_NAME   "exim_daemon_notify"
+#define NOTIFY_MSG_QRUN        1       /* Notify message types */
 
 /* End of macros.h */
index 3c72ead..5f75470 100644 (file)
@@ -346,7 +346,7 @@ const pcre *selectstring_regex_sender = NULL;
 uschar *log_detail = NULL;
 int subcount = 0;
 uschar subdirs[64];
-pid_t qpid[1] = {0};   /* Parallelism factor for q2stage 1st phase */
+pid_t qpid[4] = {0};   /* Parallelism factor for q2stage 1st phase */
 
 #ifdef MEASURE_TIMING
 report_time_since(&timestamp_startup, US"queue_run start");