patch 8.1.0796: MS-Windows 7: problem with named pipe on channel
Problem: MS-Windows 7: problem with named pipe on channel.
Solution: Put back the disconnect/connect calls. (Yasuhiro Matsumoto,
closes #3833)
diff --git a/src/channel.c b/src/channel.c
index 41d19f5..3a80748 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -3181,7 +3181,13 @@
if (r && nread > 0)
return CW_READY;
- if (r == 0)
+
+ if (channel->ch_named_pipe)
+ {
+ DisconnectNamedPipe((HANDLE)fd);
+ ConnectNamedPipe((HANDLE)fd, NULL);
+ }
+ else if (r == 0)
return CW_ERROR;
/* perhaps write some buffer lines */
@@ -3813,7 +3819,16 @@
if (part == PART_SOCK)
res = sock_write(fd, (char *)buf, len);
else
+ {
res = fd_write(fd, (char *)buf, len);
+#ifdef WIN32
+ if (channel->ch_named_pipe && res < 0)
+ {
+ DisconnectNamedPipe((HANDLE)fd);
+ ConnectNamedPipe((HANDLE)fd, NULL);
+ }
+#endif
+ }
if (res < 0 && (errno == EWOULDBLOCK
#ifdef EAGAIN
|| errno == EAGAIN