posix: revector vlc_accept()
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 21 May 2015 17:23:24 +0000 (20:23 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 21 May 2015 17:31:53 +0000 (20:31 +0300)
src/posix/filesystem.c

index 45df501..6f97f02 100644 (file)
@@ -318,35 +318,29 @@ int vlc_socket (int pf, int type, int proto, bool nonblock)
  */
 int vlc_accept (int lfd, struct sockaddr *addr, socklen_t *alen, bool nonblock)
 {
+    int fd;
 #ifdef HAVE_ACCEPT4
     int flags = SOCK_CLOEXEC;
     if (nonblock)
         flags |= SOCK_NONBLOCK;
 
     do
-    {
-        int fd = accept4 (lfd, addr, alen, flags);
-        if (fd != -1)
-            return fd;
-    }
-    while (errno == EINTR);
+        fd = accept4 (lfd, addr, alen, flags);
+    while (fd == -1 && errno == EINTR);
 
-    if (errno != ENOSYS)
-        return -1;
+    if (fd != -1 || errno != ENOSYS)
+        return fd;
 #endif
 
     do
+        fd = accept (lfd, addr, alen);
+    while (fd == -1 && errno == EINTR);
+
+    if (fd != -1)
     {
-        int fd = accept (lfd, addr, alen);
-        if (fd != -1)
-        {
-            fcntl (fd, F_SETFD, FD_CLOEXEC);
-            if (nonblock)
-                fcntl (fd, F_SETFL, fcntl (fd, F_GETFL, 0) | O_NONBLOCK);
-            return fd;
-        }
+        fcntl (fd, F_SETFD, FD_CLOEXEC);
+        if (nonblock)
+            fcntl (fd, F_SETFL, fcntl (fd, F_GETFL, 0) | O_NONBLOCK);
     }
-    while (errno == EINTR);
-
-    return -1;
+    return fd;
 }