]> git.sesse.net Git - vlc/commitdiff
Linux: use accept4 if available (glibc 2.10)
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 8 Nov 2009 11:02:43 +0000 (13:02 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 8 Nov 2009 11:02:43 +0000 (13:02 +0200)
configure.ac
src/network/httpd.c
src/network/tcp.c

index 40b46c7fb93efe1af74336af88883a5db5660ac0..423216841d456fb1b0f8d4af341cc54b86bad4aa 100644 (file)
@@ -583,7 +583,7 @@ AC_CHECK_FUNCS(fdatasync,,
 ])
 
 dnl Check for non-standard system calls
-AC_CHECK_FUNCS([vmsplice eventfd fstatfs])
+AC_CHECK_FUNCS([vmsplice eventfd fstatfs accept4])
 
 AH_BOTTOM([#include <vlc_fixups.h>])
 
index c01666155ebfa2d1759a0a7d9fec88f10ca66786..910319492999b899f632fb2b6346ff86c12e7f66 100644 (file)
@@ -2517,6 +2517,10 @@ static void* httpd_HostThread( void *data )
                 continue;
 
             /* */
+#ifdef HAVE_ACCEPT4
+            fd = accept4 (fd, NULL, NULL, SOCK_CLOEXEC);
+            if (fd == -1 && errno == ENOSYS)
+#endif
             fd = accept (fd, NULL, NULL);
             if (fd == -1)
                 continue;
index 4297a20a1e69b4653c407459c88848c0712da3c7..0347010b2eb7426352c99fd5293dc0f531fe2abf 100644 (file)
@@ -255,8 +255,15 @@ next_ai: /* failure */
 int net_AcceptSingle (vlc_object_t *obj, int lfd)
 {
     int fd;
+
     do
+    {
+#ifdef HAVE_ACCEPT4
+        fd = accept4 (lfd, NULL, NULL, SOCK_CLOEXEC);
+        if (fd == -1 && errno == ENOSYS)
+#endif
         fd = accept (lfd, NULL, NULL);
+    }
     while (fd == -1 && errno == EINTR);
 
     if (fd == -1)