4 extern volatile Sjmp_buf gNetTimeoutJmp
;
5 extern volatile Sjmp_buf gPipeJmp
;
9 SAcceptA(int sfd
, struct sockaddr_in
*const addr
, int tlen
)
13 vsio_sigproc_t sigalrm
, sigpipe
;
20 size
= sizeof(struct sockaddr_in
);
21 result
= accept(sfd
, (struct sockaddr
*) addr
, (int *) &size
);
22 if ((result
>= 0) || (errno
!= EINTR
))
27 if (SSetjmp(gNetTimeoutJmp
) != 0) {
29 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
30 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
35 sigalrm
= (vsio_sigproc_t
) SSignal(SIGALRM
, SIOHandler
);
36 sigpipe
= (vsio_sigproc_t
) SSignal(SIGPIPE
, SIG_IGN
);
37 alarm((unsigned int) tlen
);
41 size
= sizeof(struct sockaddr_in
);
42 result
= accept(sfd
, (struct sockaddr
*) addr
, (int *) &size
);
43 } while ((result
< 0) && (errno
== EINTR
));
46 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
47 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);