diff options
author | Christopher Faylor <me@cgf.cx> | 2001-08-31 05:06:14 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-08-31 05:06:14 +0000 |
commit | 5835f2cf8dfb01b93c233bfb5e486482a545aded (patch) | |
tree | 1384eb71caa42c16db5ae0ad966088417bed66fa /winsup/cygwin/net.cc | |
parent | 33bc82476eb92308590d03407cb1597eca8b0079 (diff) | |
download | cygnal-5835f2cf8dfb01b93c233bfb5e486482a545aded.tar.gz cygnal-5835f2cf8dfb01b93c233bfb5e486482a545aded.tar.bz2 cygnal-5835f2cf8dfb01b93c233bfb5e486482a545aded.zip |
* cygwin.sc: New file -- linker script for building cygwin DLL.
* Makefile.in: Use linker script to control location of cygheap.
* cygheap.cc (buckets): Make static.
(init_cheap): Remove special iswinnt handling. Allocate cygheap at a fixed
location. Display more info when allocation fails.
(cygheap_fixup_in_child): Try harder to move cygheap to correct location.
Display more info when allocation fails.
* fhandler.h (fhandler_socket): Add macros for tracking socket shutdown state.
* net.cc (cygwin_shutdown): Set appropriate shutdown value for future use.
* select.cc (select_stuff::cleanup): New method.
(cygwin_select): Call cleanup explicitly to avoid a race.
(select_stuff:~select_stuff): Call cleanup chain via cleanup method.
(fhandler_socket::select_read): Set *_ready when shutdown has been called on
the socket.
(fhandler_socket::select_write): Ditto.
(fhandler_socket::select_except): Ditto.
* winsup.h: Move NO_COPY to "COMMON" section.
* autoload.cc (wsock_started): Avoid initializing NO_COPY value.
* sigproc.cc: Remove initialization from NO_COPY variables.
(sigproc_init): Initialize sig_loop_wait here, rather than via initialization.
(subproc_init): Initialize proc_loop_wait here, rather than via initialization.
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r-- | winsup/cygwin/net.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index b9faa1bc9..7077220bc 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -1349,6 +1349,20 @@ cygwin_shutdown (int fd, int how) res = shutdown (sock->get_socket (), how); if (res) set_winsock_errno (); + else + switch (how) + { + case SHUT_RD: + sock->set_shutdown_read (); + break; + case SHUT_WR: + sock->set_shutdown_write (); + break; + case SHUT_RDWR: + sock->set_shutdown_read (); + sock->set_shutdown_write (); + break; + } } syscall_printf ("%d = shutdown (%d, %d)", res, fd, how); return res; |