Add UNIT_START errno
[paraslash.git] / net.c
diff --git a/net.c b/net.c
index b05f74d..66db86b 100644 (file)
--- a/net.c
+++ b/net.c
@@ -312,9 +312,9 @@ int para_connect(int fd, struct sockaddr_in *their_addr)
 /**
  * paraslash's wrapper around the accept system call
  *
- * @param fd the listening socket
- * @param addr structure which is filled in with the address of the peer socket
- * @param size should contain the size of the structure pointed to by \a addr
+ * \param fd the listening socket
+ * \param addr structure which is filled in with the address of the peer socket
+ * \param size should contain the size of the structure pointed to by \a addr
  *
  * \sa accept(2).
  */
@@ -322,8 +322,10 @@ int para_accept(int fd, void *addr, socklen_t size)
 {
        int new_fd;
 
-       new_fd = accept(fd, (struct sockaddr *) addr, &size);
-       return new_fd == -1? -E_ACCEPT : new_fd;
+       do 
+               new_fd = accept(fd, (struct sockaddr *) addr, &size);
+       while (new_fd < 0 && errno == EINTR);
+       return new_fd < 0? -E_ACCEPT : new_fd;
 }
 
 static int setserversockopts(int socket_fd)