[exim-cvs] fixes

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Exim Git Commits Mailing List
Datum:  
To: exim-cvs
Betreff: [exim-cvs] fixes
Gitweb: https://git.exim.org/exim.git/commitdiff/3a2adc82d165fccae92f6a693ce5ddba10d371d4
Commit:     3a2adc82d165fccae92f6a693ce5ddba10d371d4
Parent:     96c8151125ceb98ed52c0089f6401e6ba05bb41e
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Wed Mar 18 12:33:24 2020 +0000
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Wed Mar 18 12:33:24 2020 +0000


    fixes
---
 src/src/exim.c      | 3 +++
 src/src/transport.c | 1 +
 2 files changed, 4 insertions(+)


diff --git a/src/src/exim.c b/src/src/exim.c
index f7f8b25..ae958af 100644
--- 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;
+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;
 }



diff --git a/src/src/transport.c b/src/src/transport.c
index 142fede..cd5e8d3 100644
--- a/src/src/transport.c
+++ b/src/src/transport.c
@@ -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;