From 9957a7895be652b502f53811e581d923f93c135f Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Sat, 20 Apr 2019 11:46:09 -0400 Subject: [PATCH] Cygwin: FIFO: restart listen_client thread after fork/exec This allows writers to connect immediately. Previously the lct wasn't restarted until the reader attempted to read. --- winsup/cygwin/fhandler_fifo.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/fhandler_fifo.cc b/winsup/cygwin/fhandler_fifo.cc index 9b94a6da9..ac2196c92 100644 --- a/winsup/cygwin/fhandler_fifo.cc +++ b/winsup/cygwin/fhandler_fifo.cc @@ -755,7 +755,7 @@ fhandler_fifo::raw_read (void *in_ptr, size_t& len) { size_t orig_len = len; - /* Start the listen_client thread if necessary (e.g., after fork or exec). */ + /* Start the listen_client thread if necessary (shouldn't be). */ if (!listen_client_thr && !listen_client ()) goto errout; @@ -960,18 +960,16 @@ fhandler_fifo::fixup_after_fork (HANDLE parent) fc_handler[i].fh->fhandler_base::fixup_after_fork (parent); fork_fixup (parent, fc_handler[i].connect_evt, "connect_evt"); } - listen_client_thr = NULL; - lct_termination_evt = NULL; - fifo_client_unlock (); + if (reader && !listen_client ()) + debug_printf ("failed to start lct, %E"); } void fhandler_fifo::fixup_after_exec () { fhandler_base::fixup_after_exec (); - listen_client_thr = NULL; - lct_termination_evt = NULL; - fifo_client_unlock (); + if (reader && !listen_client ()) + debug_printf ("failed to start lct, %E"); } void