summaryrefslogtreecommitdiff
path: root/mail/sendmail812/files/patch-sendmail-milter.c
blob: 3c56506b00c1f60cf9250c4f7457e9c1474b4857 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sendmail 8.12.x
 
The MTA may erroneously detect a communication failure with libmilter
(EINTR in select(2)). [ http://www.sendmail.org/~ca/email/sm-812.html ]

Index: milter.c
===================================================================
RCS file: /cvs/sendmail/milter.c,v
retrieving revision 8.187
retrieving revision 8.188
diff -u -r8.187 -r8.188
--- sendmail/milter.c	2002/01/19 00:48:57	8.187
+++ sendmail/milter.c	2002/01/21 04:07:02	8.188
@@ -139,14 +139,17 @@
 		return NULL; \
 	} \
  \
-	FD_ZERO(&fds); \
-	SM_FD_SET(m->mf_sock, &fds); \
-	tv.tv_sec = (secs); \
-	tv.tv_usec = 0; \
-	ret = select(m->mf_sock + 1, \
-		     (write) ? NULL : &fds, \
-		     (write) ? &fds : NULL, \
-		     NULL, &tv); \
+	do \
+	{ \
+		FD_ZERO(&fds); \
+		SM_FD_SET(m->mf_sock, &fds); \
+		tv.tv_sec = (secs); \
+		tv.tv_usec = 0; \
+		ret = select(m->mf_sock + 1, \
+			     (write) ? NULL : &fds, \
+			     (write) ? &fds : NULL, \
+			     NULL, &tv); \
+	} while (ret < 0 && errno == EINTR); \
  \
 	switch (ret) \
 	{ \