]> andersk Git - moira.git/commitdiff
watch out for EINTR when accept()ing
authordanw <danw>
Thu, 28 Jan 1999 15:17:25 +0000 (15:17 +0000)
committerdanw <danw>
Thu, 28 Jan 1999 15:17:25 +0000 (15:17 +0000)
lib/mr_connect.c

index 6ce40e8845418937a6c87d4028053a2946deae51..3dcd4af40c528db1fbc11df1154042fea3ca7a88 100644 (file)
@@ -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);
This page took 0.076796 seconds and 5 git commands to generate.