summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2021-06-08 21:42:23 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2021-06-08 21:42:23 +0100
commit55d640e82602e67525f3c621df6f0c81278da712 (patch)
treeb491a578d63205a155c7ea27e125da810fc7a55d
parent2d6186e106b8cfc1d8f39355495e601832e92c56 (diff)
downloadexim4-55d640e82602e67525f3c621df6f0c81278da712.tar.gz
Fix server creds cache invalidation
Broken-by: 5fd673807d
-rw-r--r--src/src/daemon.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/src/daemon.c b/src/src/daemon.c
index c71bde097..b088e3491 100644
--- a/src/src/daemon.c
+++ b/src/src/daemon.c
@@ -1813,8 +1813,7 @@ if (f.daemon_listen && !f.inetd_wait_mode)
#ifdef IPV6_V6ONLY
if (af == AF_INET6 && wildcard &&
- setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, CS (&on),
- sizeof(on)) < 0)
+ setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0)
log_write(0, LOG_MAIN, "Setting IPV6_V6ONLY on daemon's IPv6 wildcard "
"socket failed (%s): carrying on without it", strerror(errno));
#endif /* IPV6_V6ONLY */
@@ -1823,16 +1822,14 @@ if (f.daemon_listen && !f.inetd_wait_mode)
is being handled. Without this, a connection will prevent reuse of the
smtp port for listening. */
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
- US (&on), sizeof(on)) < 0)
+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
log_write(0, LOG_MAIN|LOG_PANIC_DIE, "setting SO_REUSEADDR on socket "
"failed when starting daemon: %s", strerror(errno));
/* Set TCP_NODELAY; Exim does its own buffering. There is a switch to
disable this because it breaks some broken clients. */
- if (tcp_nodelay) setsockopt(fd, IPPROTO_TCP, TCP_NODELAY,
- US (&on), sizeof(on));
+ if (tcp_nodelay) setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
/* Now bind the socket to the required port; if Exim is being restarted
it may not always be possible to bind immediately, even with SO_REUSEADDR
@@ -1973,17 +1970,6 @@ if (f.running_in_test_harness || write_pid)
DEBUG(D_any) debug_printf("%s pid file %s: %s\n", (operation == PID_WRITE) ? "write" : "check", pid_file_path, strerror(errno));
}
-/* Add ancillary sockets to the set for select */
-
-#ifndef DISABLE_TLS
-if (tls_watch_fd >= 0)
- add_listener_socket(tls_watch_fd, &select_listen, &listen_fd_max);
-#endif
-if (daemon_notifier_fd >= 0)
- add_listener_socket(daemon_notifier_fd, &select_listen, &listen_fd_max);
-
-listen_fd_max++;
-
/* Set up the handler for SIGHUP, which causes a restart of the daemon. */
sighup_seen = FALSE;
@@ -2199,6 +2185,17 @@ spf_init();
tls_daemon_init();
#endif
+/* Add ancillary sockets to the set for select */
+
+#ifndef DISABLE_TLS
+if (tls_watch_fd >= 0)
+ add_listener_socket(tls_watch_fd, &select_listen, &listen_fd_max);
+#endif
+if (daemon_notifier_fd >= 0)
+ add_listener_socket(daemon_notifier_fd, &select_listen, &listen_fd_max);
+
+listen_fd_max++;
+
/* Close the log so it can be renamed and moved. In the few cases below where
this long-running process writes to the log (always exceptional conditions), it
closes the log afterwards, for the same reason. */