MacOS: fix spurious "child process failure"
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 21 Oct 2018 20:59:47 +0000 (21:59 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 21 Oct 2018 21:01:54 +0000 (22:01 +0100)
src/src/child.c
test/log/0276
test/stderr/0276
test/stdout/0276

index 085f2660063a686cb559649bb162a2e4f8bf860f..2262678eb47c5716e577ea0ecde7f86c2aca8e51 100644 (file)
@@ -517,13 +517,18 @@ for(;;)
   if (rc == pid)
     {
     int lowbyte = status & 255;
   if (rc == pid)
     {
     int lowbyte = status & 255;
-    if (lowbyte == 0) yield = (status >> 8) & 255;
-      else yield = -lowbyte;
+    yield = lowbyte == 0 ? (status >> 8) & 255 : -lowbyte;
     break;
     }
   if (rc < 0)
     {
     break;
     }
   if (rc < 0)
     {
-    yield = (errno == EINTR && sigalrm_seen)? -256 : -257;
+    /* This "shouldn't happen" test does happen on MacOS: for some reason
+    I do not understand we seems to get an alarm signal despite not having
+    an active alarm set. There seems to be only one, so just go round again. */
+
+    if (errno == EINTR && sigalrm_seen && timeout <= 0) continue;
+
+    yield = (errno == EINTR && sigalrm_seen) ? -256 : -257;
     break;
     }
   }
     break;
     }
   }
index b5a5613a3d45860b40e33650c77838a3621d15c6..6977d371d8a88b7f1c563f547f77b322dc4a18fa 100644 (file)
@@ -8,7 +8,7 @@
 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
 1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
 1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaZ-0005vi-00 ** userx@test.ex R=r1 T=t1 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after DATA: 500 NO
+1999-03-02 09:44:33 10HmaZ-0005vi-00 ** usery@test.ex R=r1 T=t1 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after DATA: 500 NO
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
 1999-03-02 09:44:33 10HmbA-0005vi-00 H=127.0.0.1 [127.0.0.1] Connection refused
 1999-03-02 09:44:33 10HmbA-0005vi-00 == CALLER@test.ex R=r1 T=t1 defer (dd): Connection refused
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
 1999-03-02 09:44:33 10HmbA-0005vi-00 H=127.0.0.1 [127.0.0.1] Connection refused
 1999-03-02 09:44:33 10HmbA-0005vi-00 == CALLER@test.ex R=r1 T=t1 defer (dd): Connection refused
index 030801927bf015403e2fddda03c8ed4975c2c860..4f4270ec1f0095765a2d9ef02be31814a9ca816f 100644 (file)
@@ -43,14 +43,14 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
          250 OK
   SMTP>> MAIL FROM:<CALLER@test.ex>
   SMTP<< 250 OK
          250 OK
   SMTP>> MAIL FROM:<CALLER@test.ex>
   SMTP<< 250 OK
-  SMTP>> RCPT TO:<userx@test.ex>
+  SMTP>> RCPT TO:<usery@test.ex>
   SMTP<< 250 OK
   SMTP>> DATA
   SMTP<< 500 NO
   SMTP>> QUIT
   SMTP(close)>>
 LOG: MAIN
   SMTP<< 250 OK
   SMTP>> DATA
   SMTP<< 500 NO
   SMTP>> QUIT
   SMTP(close)>>
 LOG: MAIN
-  ** userx@test.ex R=r1 T=t1 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after DATA: 500 NO
+  ** usery@test.ex R=r1 T=t1 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after DATA: 500 NO
 LOG: MAIN
   <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
 delivering 10HmbA-0005vi-00
 LOG: MAIN
   <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
 delivering 10HmbA-0005vi-00
index 226da3b205528c485319680c10f9268461469f25..aebed478a994e92138d12dfaae816150a91f69bc 100644 (file)
@@ -24,7 +24,7 @@ EHLO myhost.test.ex
 250 OK
 MAIL FROM:<CALLER@test.ex>
 250 OK
 250 OK
 MAIL FROM:<CALLER@test.ex>
 250 OK
-RCPT TO:<userx@test.ex>
+RCPT TO:<usery@test.ex>
 250 OK
 DATA
 500 NO
 250 OK
 DATA
 500 NO