Index: ossp-pkg/sa/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/sa/ChangeLog,v rcsdiff -q -kk '-r1.30' '-r1.31' -u '/v/ossp/cvs/ossp-pkg/sa/ChangeLog,v' 2>/dev/null --- ChangeLog 2004/03/26 16:49:40 1.30 +++ ChangeLog 2004/04/02 12:26:59 1.31 @@ -13,6 +13,12 @@ Changes between 1.1.0 and FIXME (10-Nov-2003 to FIXME) + o Restart accept(2) after interrupted system call. + OSSP lmtp2nntp daemon failed to accept a connection after a signal + handler was run on Solaris which caused the system call to be + interrupted. Issue was found and reported by Amos Gouaux. + [Thomas Lotterer ] + o Add SA_CHECK_SOCKOPT autoconf check to detect setsockopt failing under run-time on Solaris 2.6,8,9,10 and Debian 2.2 because SO_RCVTIMEO|SO_SNDTIMEO are defined but not implemented. Index: ossp-pkg/sa/sa.c RCS File: /v/ossp/cvs/ossp-pkg/sa/sa.c,v rcsdiff -q -kk '-r1.78' '-r1.79' -u '/v/ossp/cvs/ossp-pkg/sa/sa.c,v' 2>/dev/null --- sa.c 2004/03/26 16:57:14 1.78 +++ sa.c 2004/04/02 12:26:59 1.79 @@ -1602,7 +1602,10 @@ /* perform accept operation on underlying socket */ sa_size = (socklen_t)sizeof(sa_buf); - if ((s = SA_SC_CALL_3(sa, accept, sa->fdSocket, (struct sockaddr *)&sa_buf, &sa_size)) == -1) + do { + s = SA_SC_CALL_3(sa, accept, sa->fdSocket, (struct sockaddr *)&sa_buf, &sa_size); + } while (s == -1 && errno == EINTR); + if (s == -1) return SA_RC(SA_ERR_SYS); /* create result address object */