* dcrt0.cc (do_exit): Don't set thread termination until all fds have been

closed since an fd may rely on a thread.
* fhandler_tty.cc: Reformat comment.
(fhandler_pty_master::pty_master_thread): Refuse ERROR_PIPE_CONNECTED state as
an error.
* globals.cc (exit_states): Reorder ES_THREADTERM.
* path.cc (find_fast_cwd_pointers): Remove excessively wordy DEBUGGING output.
This commit is contained in:
Christopher Faylor
2010-10-24 18:50:57 +00:00
parent 488ddaced3
commit 5160c5f430
5 changed files with 23 additions and 16 deletions

View File

@@ -1614,10 +1614,9 @@ extern "C" BOOL WINAPI GetNamedPipeClientProcessId (HANDLE, PULONG);
OSes there's no function to check for the PID of the client process so
we have to trust the client side.
Since there's
always only one pipe instance, there's a chance that clients have to
wait to connect to the master control pipe. Therefore the client calls
to CallNamedPipe should have a big enough timeout value. For now this
Since there's always only one pipe instance, there's a chance that clients
have to wait to connect to the master control pipe. Therefore the client
calls to CallNamedPipe should have a big enough timeout value. For now this
is 500ms. Hope that's enough. */
DWORD
@@ -1635,7 +1634,7 @@ fhandler_pty_master::pty_master_thread ()
DWORD pid;
termios_printf ("Entered");
while (!exit && ConnectNamedPipe (master_ctl, NULL))
while (!exit && (ConnectNamedPipe (master_ctl, NULL) || GetLastError () == ERROR_PIPE_CONNECTED))
{
pipe_reply repl = { NULL, NULL, 0 };
bool deimp = false;