This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [PATCH fifo 0/2] Add support for duplex FIFOs
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin-patches at cygwin dot com" <cygwin-patches at cygwin dot com>
- Date: Mon, 29 Apr 2019 18:29:55 +0000
- Subject: Re: [PATCH fifo 0/2] Add support for duplex FIFOs
- References: <20190325230556.2219-1-kbrown@cornell.edu>
On 3/25/2019 7:06 PM, Ken Brown wrote:
> The second patch in this series enables opening a FIFO with O_RDWR
> access. The underlying Windows named pipe is created with duplex
> access, and its handle is made the I/O handle of the first client.
>
> I tested the patch in two ways.
>
> First,
[...]
> The second test was the following sequence of commands in a bash
> shell:
>
> $ mkfifo foo
>
> $ exec 7<>foo
>
> $ echo blah > foo
>
> $ read bar <&7
>
> $ echo $bar
> blah
I just realized that this doesn't test *writing* to the fd of a FIFO opened with
O_RDWR. If I change the third command to "echo blah >&7", it does test this,
and the write fails with ECOMM. It turns out that the call to NtWriteFile in
fhandler_fifo::raw_write fails with STATUS_PIPE_LISTENING.
Corinna, I'll try to debug this, but since I know you're about to be AFK for a
month, I thought I'd check to see if you have any idea why this would happen.
The Windows named pipe that we're writing to was created by a call to
NtCreateNamedPipeFile with access = GENERIC_READ |GENERIC_WRITE |
FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES | SYNCHRONIZE, and it was put in
nonblocking mode by a call to NtSetInformationFile with fpi.CompletionMode =
FILE_PIPE_COMPLETE_OPERATION.
Thanks for any suggestions.
Ken