On Mar  5 23:34, Takashi Yano wrote:
> When transferring huge file using scp, the "lost connection" error
> sometimes happen. This is due to fhandler_pipe_fifo::raw_write()
> accidentally sends data that is not reported in th return value when
> interrupted by a signal. The cause of the problem is that CancelIo()
> responds success even if NtWriteFile() already sends the data.
> 
> The following testcase using plain Win32 APIs reproduces the issue.
> The output will be something like:
> W: 8589934592
> R: 9280061440
> Much more data was received than the sender thought it had sent.
> [...]
> Addresses: https://cygwin.com/pipermail/cygwin/2025-January/257143.html
> Fixes: 4003e3dfa1b9 ("Cygwin: pipes: always terminate async IO in blocking 
> mode")
> Reported-by: Jay M Martin <jaymmartin_...@cox.net>
> Reviewed-by: Corinna Vinschen <cori...@vinschen.de>
> Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp>
> ---
>  winsup/cygwin/fhandler/pipe.cc | 28 ++++++++++++++++++++--------
>  winsup/cygwin/release/3.6.0    |  3 +++
>  2 files changed, 23 insertions(+), 8 deletions(-)

Great job, go for it!


Thanks,
Corinna

Reply via email to