diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-01-15 21:34:27 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-01-15 21:34:27 +0000 |
commit | 9d5bf1b13cd23d6ade893195e81a58f1b4dcadb7 (patch) | |
tree | cf002cf0144cf1d69b511a7db0b883d41d064e80 | |
parent | be0ca195b9da3cbe721f14c58df852847d4f4caf (diff) | |
download | cygnal-9d5bf1b13cd23d6ade893195e81a58f1b4dcadb7.tar.gz cygnal-9d5bf1b13cd23d6ade893195e81a58f1b4dcadb7.tar.bz2 cygnal-9d5bf1b13cd23d6ade893195e81a58f1b4dcadb7.zip |
* fhandler_socket.cc (fhandler_socket::accept4): Set nonblocking
flag exactly according to flags, as on Linux.
* net.cc (cygwin_accept): Maintain BSD semantics here.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/net.cc | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e68587585..86bdcab61 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2010-01-15 Pierre A. Humblet <phumblet@phumblet.no-ip.org> + + * fhandler_socket.cc (fhandler_socket::accept4): Set nonblocking + flag exactly according to flags, as on Linux. + * net.cc (cygwin_accept): Maintain BSD semantics here. + 2010-01-15 Corinna Vinschen <corinna@vinschen.de> * cygwin.din (accept4): Export. diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index b5201939d..1526c084e 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1236,8 +1236,7 @@ fhandler_socket::accept4 (struct sockaddr *peer, int *len, int flags) } } } - sock->set_nonblocking (flags & SOCK_NONBLOCK - ? true : is_nonblocking ()); + sock->set_nonblocking (flags & SOCK_NONBLOCK); if (flags & SOCK_CLOEXEC) sock->set_close_on_exec (true); /* No locking necessary at this point. */ diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 93d39d9e5..ac83d4e53 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -1256,7 +1256,7 @@ cygwin_accept (int fd, struct sockaddr *peer, socklen_t *len) if (efault.faulted (EFAULT) || !fh) res = -1; else - res = fh->accept4 (peer, len, 0); + res = fh->accept4 (peer, len, fh->is_nonblocking () ? SOCK_NONBLOCK : 0); syscall_printf ("%d = accept (%d, %p, %p)", res, fd, peer, len); return res; |