fixes
authorJeremy Harris <jgh146exb@wizmail.org>
Wed, 18 Mar 2020 12:33:24 +0000 (12:33 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Wed, 18 Mar 2020 12:33:24 +0000 (12:33 +0000)
src/src/exim.c
src/src/transport.c

index f7f8b251aeed8b25b20c699b2fa033df72a8e142..ae958af1c0dc45680230e134312f7e81963508bb 100644 (file)
@@ -309,6 +309,7 @@ milliwait(struct itimerval *itval)
 {
 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;
@@ -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 */
+errno = save_errno;
+sigalrm_seen = FALSE;
 }
 
 
index 142fede070f7ce0fcb53516989f9f7d016f8635a..cd5e8d3191fc046a06a62ac8f4dbbad52bc2859e 100644 (file)
@@ -265,6 +265,7 @@ for (int i = 0; i < 100; i++)
       }
     else                               /* Timeout wanted. */
       {
+      sigalrm_seen = FALSE;
       ALARM(local_timeout);
        rc = tpt_write(fd, block, len, more, tctx->options);
        save_errno = errno;