summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-12-15 18:12:49 +0100
committerCorinna Vinschen <corinna@vinschen.de>2016-06-24 22:50:12 +0200
commit0f5afe895fbf356d259fb6425d6a3176c4540b42 (patch)
tree5074b605fdbceacc3d40a3a5103823750a30fef1
parentba8d6a595aad5134f013c29f7c61f0f0d665b0d2 (diff)
downloadcygnal-0f5afe895fbf356d259fb6425d6a3176c4540b42.tar.gz
cygnal-0f5afe895fbf356d259fb6425d6a3176c4540b42.tar.bz2
cygnal-0f5afe895fbf356d259fb6425d6a3176c4540b42.zip
net.cc (fdsock): Fix comment
-rw-r--r--winsup/cygwin/net.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index 7834aae9d..3641f96d7 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -534,18 +534,15 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
SetHandleInformation. Subsequent socket calls in the child process fail
with error 10038, WSAENOTSOCK.
- The only way up to Windows Server 2003 to make these sockets usable in
- child processes is to duplicate them via WSADuplicateSocket/WSASocket
- calls. This requires to start the child process in SUSPENDED state so
- we only do this on affected systems. If we recognize a non-inheritable
- socket we switch to inheritance/dup via WSADuplicateSocket/WSASocket for
- that socket.
-
- Starting with Vista there's another neat way to workaround these annoying
- LSP sockets. WSAIoctl allows to fetch the underlying base socket, which
- is a normal, inheritable IFS handle. So we fetch the base socket,
- duplicate it, and close the original socket. Now we have a standard IFS
- socket which (hopefully) works as expected. */
+ There's a neat way to workaround these annoying LSP sockets. WSAIoctl
+ allows to fetch the underlying base socket, which is a normal, inheritable
+ IFS handle. So we fetch the base socket, duplicate it, and close the
+ original socket. Now we have a standard IFS socket which (hopefully)
+ works as expected.
+
+ If that doesn't work for some reason, mark the sockets for duplication
+ via WSADuplicateSocket/WSASocket. This requires to start the child
+ process in SUSPENDED state so we only do this if really necessary. */
DWORD flags;
bool fixup = false;
if (!GetHandleInformation ((HANDLE) soc, &flags)