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