git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Disable server-side close timing sophistication on MacOS
[exim.git]
/
src
/
src
/
queue.c
diff --git
a/src/src/queue.c
b/src/src/queue.c
index 3235a41ba582b2dda860045f6f816fd73b8e5ce5..4c93c1d7fc15bc9cac29f705d71e8a13db50c256 100644
(file)
--- a/
src/src/queue.c
+++ b/
src/src/queue.c
@@
-3,6
+3,7
@@
*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions that operate on the input queue. */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions that operate on the input queue. */
@@
-25,6
+26,9
@@
Michael Haardt. */
#define LOG2_MAXNODES 32
#define LOG2_MAXNODES 32
+#ifndef DISABLE_TLS
+static BOOL queue_tls_init = FALSE;
+#endif
/*************************************************
* Helper sort function for queue_get_spool_list *
/*************************************************
* Helper sort function for queue_get_spool_list *
@@
-125,8
+129,6
@@
int resetflags = -1;
int subptr;
queue_filename *yield = NULL;
queue_filename *last = NULL;
int subptr;
queue_filename *yield = NULL;
queue_filename *last = NULL;
-struct dirent *ent;
-DIR *dd;
uschar buffer[256];
queue_filename *root[LOG2_MAXNODES];
uschar buffer[256];
queue_filename *root[LOG2_MAXNODES];
@@
-171,6
+173,7
@@
for (; i <= *subcount; i++)
{
int count = 0;
int subdirchar = subdirs[i]; /* 0 for main directory */
{
int count = 0;
int subdirchar = subdirs[i]; /* 0 for main directory */
+ DIR *dd;
if (subdirchar != 0)
{
if (subdirchar != 0)
{
@@
-179,12
+182,12
@@
for (; i <= *subcount; i++)
}
DEBUG(D_queue_run) debug_printf("looking in %s\n", buffer);
}
DEBUG(D_queue_run) debug_printf("looking in %s\n", buffer);
- if (!(dd =
opendir(CS
buffer)))
+ if (!(dd =
exim_opendir(
buffer)))
continue;
/* Now scan the directory. */
continue;
/* Now scan the directory. */
-
while ((ent = readdir(dd))
)
+
for (struct dirent *ent; ent = readdir(dd);
)
{
uschar *name = US ent->d_name;
int len = Ustrlen(name);
{
uschar *name = US ent->d_name;
int len = Ustrlen(name);
@@
-648,6
+651,16
@@
for (int i = queue_run_in_order ? -1 : 0;
report_time_since(×tamp_startup, US"queue msg selected");
#endif
report_time_since(×tamp_startup, US"queue msg selected");
#endif
+#ifndef DISABLE_TLS
+ if (!queue_tls_init)
+ {
+ queue_tls_init = TRUE;
+ /* Preload TLS library info for smtp transports. Once, and only if we
+ have a delivery to do. */
+ tls_client_creds_reload(FALSE);
+ }
+#endif
+
single_item_retry:
if ((pid = exim_fork(US"qrun-delivery")) == 0)
{
single_item_retry:
if ((pid = exim_fork(US"qrun-delivery")) == 0)
{
@@
-1410,13
+1423,13
@@
switch(action)
parse_extract_address(argv[recipients_arg], &errmess, &start, &end,
&domain, (action == MSG_EDIT_SENDER));
parse_extract_address(argv[recipients_arg], &errmess, &start, &end,
&domain, (action == MSG_EDIT_SENDER));
- if (
recipient == NULL
)
+ if (
!recipient
)
{
yield = FALSE;
printf("- error while %s:\n bad address %s: %s\n",
doing, argv[recipients_arg], errmess);
}
{
yield = FALSE;
printf("- error while %s:\n bad address %s: %s\n",
doing, argv[recipients_arg], errmess);
}
- else if (
recipient[0] != 0
&& domain == 0)
+ else if (
*recipient
&& domain == 0)
{
yield = FALSE;
printf("- error while %s:\n bad address %s: "
{
yield = FALSE;
printf("- error while %s:\n bad address %s: "
@@
-1531,7
+1544,7
@@
if (s)
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
-#if
def EXPERIMENTAL
_QUEUE_RAMP
+#if
ndef DISABLE
_QUEUE_RAMP
void
queue_notify_daemon(const uschar * msgid)
{
void
queue_notify_daemon(const uschar * msgid)
{
@@
-1546,7
+1559,6
@@
memcpy(buf+1, msgid, MESSAGE_ID_LENGTH+1);
if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) >= 0)
{
struct sockaddr_un sa_un = {.sun_family = AF_UNIX};
if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) >= 0)
{
struct sockaddr_un sa_un = {.sun_family = AF_UNIX};
- int slen;
#ifdef EXIM_HAVE_ABSTRACT_UNIX_SOCKETS
int len = offsetof(struct sockaddr_un, sun_path) + 1
#ifdef EXIM_HAVE_ABSTRACT_UNIX_SOCKETS
int len = offsetof(struct sockaddr_un, sun_path) + 1