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
Call initgroups() when dropping privilege, in order that Exim runs with
[exim.git]
/
src
/
src
/
queue.c
diff --git
a/src/src/queue.c
b/src/src/queue.c
index b2f7dda848d4981fd58a8885ae70eebcaf21cf9c..caceeb097e67f32ccb18850659c4fa73e9618297 100644
(file)
--- a/
src/src/queue.c
+++ b/
src/src/queue.c
@@
-1,10
+1,10
@@
-/* $Cambridge: exim/src/src/queue.c,v 1.
5 2005/02/17 11:58:26
ph10 Exp $ */
+/* $Cambridge: exim/src/src/queue.c,v 1.
10 2006/02/14 15:24:10
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
6
*/
/* 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
+453,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 */
@@
-594,7
+595,7
@@
for (i = (queue_run_in_order? -1 : 0);
if (queue_run_pipe == 0)
{
queue_run_pipe = dup(queue_run_pipe);
if (queue_run_pipe == 0)
{
queue_run_pipe = dup(queue_run_pipe);
- close(0);
+
(void)
close(0);
}
/* Before forking to deliver the message, ensure any open and cached
}
/* Before forking to deliver the message, ensure any open and cached
@@
-627,7
+628,7
@@
for (i = (queue_run_in_order? -1 : 0);
/* Close the writing end of the synchronizing pipe in this process,
then wait for the first level process to terminate. */
/* Close the writing end of the synchronizing pipe in this process,
then wait for the first level process to terminate. */
- close(pfd[pipe_write]);
+
(void)
close(pfd[pipe_write]);
set_process_info("running queue: waiting for %s (%d)", f->text, pid);
while (wait(&status) != pid);
set_process_info("running queue: waiting for %s (%d)", f->text, pid);
while (wait(&status) != pid);
@@
-873,7
+874,7
@@
for (; f != NULL; f = f->next)
big_buffer[n-1] = 0;
tree_add_nonrecipient(big_buffer);
}
big_buffer[n-1] = 0;
tree_add_nonrecipient(big_buffer);
}
- fclose(jread);
+
(void)
fclose(jread);
}
}
}
}
@@
-895,10
+896,8
@@
for (; f != NULL; f = f->next)
sprintf(CS big_buffer, "%s/input/%s/%s", spool_directory, message_subdir,
f->text);
if (Ustat(big_buffer, &statbuf) == 0)
sprintf(CS big_buffer, "%s/input/%s/%s", spool_directory, message_subdir,
f->text);
if (Ustat(big_buffer, &statbuf) == 0)
- {
- int size = statbuf.st_size; /* Because might be a long */
- printf("*** spool format error: size=%d ***", size);
- }
+ printf("*** spool format error: size=" OFF_T_FMT " ***",
+ statbuf.st_size);
else printf("*** spool format error ***");
}
else printf("*** spool read error: %s ***", strerror(save_errno));
else printf("*** spool format error ***");
}
else printf("*** spool read error: %s ***", strerror(save_errno));
@@
-1021,9
+1020,9
@@
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)
- write(fileno(stdout), big_buffer, rc);
+
(void)
write(fileno(stdout), big_buffer, rc);
- close(fd);
+
(void)
close(fd);
return TRUE;
}
return TRUE;
}
@@
-1066,7
+1065,7
@@
if (spool_read_header(spoolname, TRUE, FALSE) != spool_read_OK)
printf("Spool format error for %s\n", spoolname);
if (action != MSG_REMOVE || !admin_user)
{
printf("Spool format error for %s\n", spoolname);
if (action != MSG_REMOVE || !admin_user)
{
- close(deliver_datafile);
+
(void)
close(deliver_datafile);
deliver_datafile = -1;
return FALSE;
}
deliver_datafile = -1;
return FALSE;
}
@@
-1081,7
+1080,7
@@
why we leave this check until after the headers are read. */
if (!admin_user && (action != MSG_REMOVE || real_uid != originator_uid))
{
printf("Permission denied\n");
if (!admin_user && (action != MSG_REMOVE || real_uid != originator_uid))
{
printf("Permission denied\n");
- close(deliver_datafile);
+
(void)
close(deliver_datafile);
deliver_datafile = -1;
return FALSE;
}
deliver_datafile = -1;
return FALSE;
}
@@
-1316,7
+1315,7
@@
switch(action)
/* Closing the datafile releases the lock and permits other processes
to operate on the message (if it still exists). */
/* Closing the datafile releases the lock and permits other processes
to operate on the message (if it still exists). */
-close(deliver_datafile);
+
(void)
close(deliver_datafile);
deliver_datafile = -1;
return yield;
}
deliver_datafile = -1;
return yield;
}