summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/select.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-10-11 12:14:29 +0000
committerCorinna Vinschen <corinna@vinschen.de>2014-10-11 12:14:29 +0000
commit2483fa271906edb01c1aa9ea1a9c5c7e0fc6a8c0 (patch)
treec630d3bf82cb6d4d63582b5a6caf423906b6a3dc /winsup/cygwin/select.cc
parent9f64fd80819b80513fadfe842622cf6d3853c1c0 (diff)
downloadcygnal-2483fa271906edb01c1aa9ea1a9c5c7e0fc6a8c0.tar.gz
cygnal-2483fa271906edb01c1aa9ea1a9c5c7e0fc6a8c0.tar.bz2
cygnal-2483fa271906edb01c1aa9ea1a9c5c7e0fc6a8c0.zip
* fhandler_socket.cc (fhandler_socket::evaluate_events): Handle
connect_state and af_local_connect connect call here, once, independent of FD_CONNECT being requested. Add comment to explain why. (fhandler_socket::connect): Drop connect_state handling and calling af_local_connect. Move remaining AF_LOCAL stuff prior to calling ::connect and explain why. Simplify error case. * poll.cc (poll): Handle connect state independently of POLLOUT being requested for the descriptor to allow setting POLLIN if connect failed. Add comment. * select.cc (set_bits): Drop connect_state and AF_LOCAL handling here.
Diffstat (limited to 'winsup/cygwin/select.cc')
-rw-r--r--winsup/cygwin/select.cc14
1 files changed, 4 insertions, 10 deletions
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc
index 6a396852a..c72cd0c76 100644
--- a/winsup/cygwin/select.cc
+++ b/winsup/cygwin/select.cc
@@ -480,16 +480,10 @@ set_bits (select_record *me, fd_set *readfds, fd_set *writefds,
UNIX_FD_SET (me->fd, writefds);
if (me->except_on_write && (sock = me->fh->is_socket ()))
{
- /* Special AF_LOCAL handling. */
- if (!me->read_ready && sock->connect_state () == connect_pending
- && sock->af_local_connect ())
- {
- if (me->read_selected)
- UNIX_FD_SET (me->fd, readfds);
- sock->connect_state (connect_failed);
- }
- else
- sock->connect_state (connected);
+ /* Set readfds entry in case of a failed connect. */
+ if (!me->read_ready && me->read_selected
+ && sock->connect_state () == connect_failed)
+ UNIX_FD_SET (me->fd, readfds);
}
ready++;
}