diff options
Diffstat (limited to 'contrib/sendmail/libmilter/listener.c')
| -rw-r--r-- | contrib/sendmail/libmilter/listener.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/contrib/sendmail/libmilter/listener.c b/contrib/sendmail/libmilter/listener.c index 03d8acd34e68a..e809a7b615aa2 100644 --- a/contrib/sendmail/libmilter/listener.c +++ b/contrib/sendmail/libmilter/listener.c @@ -9,7 +9,7 @@   */  #include <sm/gen.h> -SM_RCSID("@(#)$Id: listener.c,v 8.85 2002/05/28 18:17:41 gshapiro Exp $") +SM_RCSID("@(#)$Id: listener.c,v 8.85.2.1 2002/08/09 22:13:36 gshapiro Exp $")  /*  **  listener.c -- threaded network listener @@ -621,12 +621,19 @@ mi_closener()  	st.tv_sec = (s);						\  	st.tv_usec = 0;							\  	if (st.tv_sec > 0)						\ -		rs = select(0, NULL, NULL, NULL, &st);			\ -	if (rs != 0)							\  	{								\ -		smi_log(SMI_LOG_ERR,					\ -			"MI_SLEEP(): select() returned non-zero result %d, errno = %d",								\ -			rs, errno);					\ +		for (;;)						\ +		{							\ +			rs = select(0, NULL, NULL, NULL, &st);		\ +			if (rs < 0 && errno == EINTR)			\ +				continue;				\ +			if (rs != 0)					\ +			{						\ +				smi_log(SMI_LOG_ERR,			\ +					"MI_SLEEP(): select() returned non-zero result %d, errno = %d",						\ +					rs, errno);			\ +			}						\ +		}							\  	}								\  }  #else /* BROKEN_PTHREAD_SLEEP */ | 
