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
debug tidying
[exim.git]
/
src
/
src
/
exim.c
diff --git
a/src/src/exim.c
b/src/src/exim.c
index 9d87c8daa468a76919b68717dd57f6adbe71d18a..1c0ea6b6e2c80106bd3c1192f06f9c917e8cfc19 100644
(file)
--- a/
src/src/exim.c
+++ b/
src/src/exim.c
@@
-309,6
+309,7
@@
milliwait(struct itimerval *itval)
{
sigset_t sigmask;
sigset_t old_sigmask;
{
sigset_t sigmask;
sigset_t old_sigmask;
+int save_errno = errno;
if (itval->it_value.tv_usec < 50 && itval->it_value.tv_sec == 0)
return;
if (itval->it_value.tv_usec < 50 && itval->it_value.tv_sec == 0)
return;
@@
-322,6
+323,8
@@
if (setitimer(ITIMER_REAL, itval, NULL) < 0) /* Start timer */
(void)sigdelset(&sigmask, SIGALRM); /* Remove SIGALRM */
(void)sigsuspend(&sigmask); /* Until SIGALRM */
(void)sigprocmask(SIG_SETMASK, &old_sigmask, NULL); /* Restore mask */
(void)sigdelset(&sigmask, SIGALRM); /* Remove SIGALRM */
(void)sigsuspend(&sigmask); /* Until SIGALRM */
(void)sigprocmask(SIG_SETMASK, &old_sigmask, NULL); /* Restore mask */
+errno = save_errno;
+sigalrm_seen = FALSE;
}
}
@@
-342,11
+345,9
@@
Returns: nothing
void
millisleep(int msec)
{
void
millisleep(int msec)
{
-struct itimerval itval;
-itval.it_interval.tv_sec = 0;
-itval.it_interval.tv_usec = 0;
-itval.it_value.tv_sec = msec/1000;
-itval.it_value.tv_usec = (msec % 1000) * 1000;
+struct itimerval itval = {.it_interval = {.tv_sec = 0, .tv_usec = 0},
+ .it_value = {.tv_sec = msec/1000,
+ .tv_usec = (msec % 1000) * 1000}};
milliwait(&itval);
}
milliwait(&itval);
}
@@
-727,9
+728,13
@@
exit(rc);
void
void
-exim_underbar_exit(int rc)
+exim_underbar_exit(int rc
, const uschar * process
)
{
store_exit();
{
store_exit();
+DEBUG(D_any)
+ debug_printf(">>>>>>>>>>>>>>>> Exim pid=%d %s%s%sterminating with rc=%d "
+ ">>>>>>>>>>>>>>>>\n", (int)getpid(),
+ process ? "(" : "", process, process ? ") " : "", rc);
_exit(rc);
}
_exit(rc);
}
@@
-2755,6
+2760,13
@@
for (i = 1; i < argc; i++)
case 'D': smtp_peer_options |= OPTION_DSN; break;
case 'D': smtp_peer_options |= OPTION_DSN; break;
+ /* -MCd: for debug, set a process-purpose string */
+
+ case 'd': if (++i < argc)
+ process_purpose = string_copy_taint(argv[i], TRUE);
+ else badarg = TRUE;
+ break;
+
/* -MCG: set the queue name, to a non-default value */
case 'G': if (++i < argc) queue_name = string_copy(argv[i]);
/* -MCG: set the queue name, to a non-default value */
case 'G': if (++i < argc) queue_name = string_copy(argv[i]);
@@
-4604,10
+4616,10
@@
if (msg_action_arg > 0 && msg_action != MSG_LOAD)
pid_t pid;
if (i == argc - 1)
(void)deliver_message(argv[i], forced_delivery, deliver_give_up);
pid_t pid;
if (i == argc - 1)
(void)deliver_message(argv[i], forced_delivery, deliver_give_up);
- else if ((pid =
fork(
)) == 0)
+ else if ((pid =
exim_fork(US"cmdline-delivery"
)) == 0)
{
(void)deliver_message(argv[i], forced_delivery, deliver_give_up);
{
(void)deliver_message(argv[i], forced_delivery, deliver_give_up);
- exim_underbar_exit(EXIT_SUCCESS);
+ exim_underbar_exit(EXIT_SUCCESS
, US"cmdline-delivery"
);
}
else if (pid < 0)
{
}
else if (pid < 0)
{
@@
-5690,7
+5702,7
@@
while (more)
pid_t pid;
search_tidyup();
pid_t pid;
search_tidyup();
- if ((pid =
fork(
)) == 0)
+ if ((pid =
exim_fork(US"local-accept-delivery"
)) == 0)
{
int rc;
close_unwanted(); /* Close unwanted file descriptors and TLS */
{
int rc;
close_unwanted(); /* Close unwanted file descriptors and TLS */
@@
-5710,7
+5722,7
@@
while (more)
rc = deliver_message(message_id, FALSE, FALSE);
search_tidyup();
exim_underbar_exit(!mua_wrapper || rc == DELIVER_MUA_SUCCEEDED
rc = deliver_message(message_id, FALSE, FALSE);
search_tidyup();
exim_underbar_exit(!mua_wrapper || rc == DELIVER_MUA_SUCCEEDED
- ? EXIT_SUCCESS : EXIT_FAILURE);
+ ? EXIT_SUCCESS : EXIT_FAILURE
, US"cmdline-delivery"
);
}
if (pid < 0)
}
if (pid < 0)