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
Certificate variables and field-extractor expansions. Bug 1358
[exim.git]
/
src
/
src
/
queue.c
diff --git
a/src/src/queue.c
b/src/src/queue.c
index c234ffe26fee7f620baadef53733ae966c65e573..8876e09beb8ff233bea77e914fdf00a10853b99c 100644
(file)
--- a/
src/src/queue.c
+++ b/
src/src/queue.c
@@
-1,10
+1,8
@@
-/* $Cambridge: exim/src/src/queue.c,v 1.8 2005/06/27 14:29:43 ph10 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 200
5
*/
+/* Copyright (c) University of Cambridge 1995 - 200
9
*/
/* 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. */
@@
-453,7
+451,8
@@
for (i = (queue_run_in_order? -1 : 0);
load_average = os_getloadavg();
if (load_average > deliver_queue_load_max)
{
load_average = os_getloadavg();
if (load_average > deliver_queue_load_max)
{
- log_write(0, LOG_MAIN, "abandon queue run (load %.2f, max %.2f)",
+ log_write(L_queue_run, LOG_MAIN, "Abandon queue run: %s (load %.2f, max %.2f)",
+ log_detail,
(double)load_average/1000.0,
(double)deliver_queue_load_max/1000.0);
i = subcount; /* Don't process other directories */
(double)load_average/1000.0,
(double)deliver_queue_load_max/1000.0);
i = subcount; /* Don't process other directories */
@@
-651,7
+650,8
@@
for (i = (queue_run_in_order? -1 : 0);
the mere fact that read() unblocks is enough. */
set_process_info("running queue: waiting for children of %d", pid);
the mere fact that read() unblocks is enough. */
set_process_info("running queue: waiting for children of %d", pid);
- (void)read(pfd[pipe_read], buffer, sizeof(buffer));
+ if (read(pfd[pipe_read], buffer, sizeof(buffer)) > 0)
+ log_write(0, LOG_MAIN|LOG_PANIC, "queue run: unexpected data on pipe");
(void)close(pfd[pipe_read]);
set_process_info("running queue");
(void)close(pfd[pipe_read]);
set_process_info("running queue");
@@
-935,9
+935,9
@@
for (; f != NULL; f = f->next)
* Act on a specific message *
*************************************************/
* Act on a specific message *
*************************************************/
-/* Actions that require a list of addresses make use of
-argv/argc/recipients_arg. Other actions do not. This function does its
-
own
authority checking.
+/* Actions that require a list of addresses make use of
argv/argc/
+recipients_arg. Other actions do not. This function does its own
+authority checking.
Arguments:
id id of the message to work on
Arguments:
id id of the message to work on
@@
-1019,7
+1019,7
@@
if (action >= MSG_SHOW_BODY)
}
while((rc = read(fd, big_buffer, big_buffer_size)) > 0)
}
while((rc = read(fd, big_buffer, big_buffer_size)) > 0)
-
(void)
write(fileno(stdout), big_buffer, rc);
+
rc =
write(fileno(stdout), big_buffer, rc);
(void)close(fd);
return TRUE;
(void)close(fd);
return TRUE;
@@
-1092,10
+1092,17
@@
username = (pw != NULL)?
/* Take the necessary action. */
/* Take the necessary action. */
-printf("Message %s ", id);
+
if (action != MSG_SHOW_COPY)
printf("Message %s ", id);
switch(action)
{
switch(action)
{
+ case MSG_SHOW_COPY:
+ deliver_in_buffer = store_malloc(DELIVER_IN_BUFFER_SIZE);
+ deliver_out_buffer = store_malloc(DELIVER_OUT_BUFFER_SIZE);
+ transport_write_message(NULL, 1, 0, 0, NULL, NULL, NULL, NULL, NULL, 0);
+ break;
+
+
case MSG_FREEZE:
if (deliver_freeze)
{
case MSG_FREEZE:
if (deliver_freeze)
{