vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Thu May 21 20:23:24 2015 +0300| [bc43f3ac8c0e71f779e6f816f6b7e536e299308b] | committer: Rémi Denis-Courmont
posix: revector vlc_accept() > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bc43f3ac8c0e71f779e6f816f6b7e536e299308b --- src/posix/filesystem.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/posix/filesystem.c b/src/posix/filesystem.c index 45df501..6f97f02 100644 --- a/src/posix/filesystem.c +++ b/src/posix/filesystem.c @@ -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; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
