From 78eea87c323d1cd1f4522d8a5aaab6e45a3d4d55 Mon Sep 17 00:00:00 2001 From: danw Date: Thu, 28 Jan 1999 15:17:25 +0000 Subject: [PATCH] watch out for EINTR when accept()ing --- lib/mr_connect.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/mr_connect.c b/lib/mr_connect.c index 6ce40e88..3dcd4af4 100644 --- a/lib/mr_connect.c +++ b/lib/mr_connect.c @@ -270,12 +270,15 @@ int mr_listen(char *port) int mr_accept(int s, struct sockaddr_in *sin) { - int conn, addrlen = sizeof(struct sockaddr_in), nread, status; + int conn = -1, addrlen = sizeof(struct sockaddr_in), nread, status; char *buf = NULL; - conn = accept(s, (struct sockaddr *)sin, &addrlen); - if (conn < 0) - return -1; + while (conn < 0) + { + conn = accept(s, (struct sockaddr *)sin, &addrlen); + if (conn < 0 && errno != EINTR) + return -1; + } do status = mr_cont_accept(conn, &buf, &nread); -- 2.45.2