* fhandler.h (PIPE_ADD_PID): Define new flag.
* pipe.cc (fhandler_pipe::create): Don't indiscriminately add process id to every pipe since some pipe names (fifo, tty) don't need it. * sigproc.cc (sigproc_init): Pass PIPE_ADD_PID to fhandler_pipe::create to ensure that pid is always part of sigwait pipe name.
This commit is contained in:
@@ -211,9 +211,8 @@ fhandler_pipe::create (LPSECURITY_ATTRIBUTES sa_ptr, PHANDLE r, PHANDLE w,
|
||||
psize = DEFAULT_PIPEBUFSIZE;
|
||||
|
||||
char pipename[MAX_PATH];
|
||||
const size_t len = __small_sprintf (pipename, PIPE_INTRO "%S-%u-",
|
||||
&cygheap->installation_key,
|
||||
GetCurrentProcessId ());
|
||||
size_t len = __small_sprintf (pipename, PIPE_INTRO "%S-",
|
||||
&cygheap->installation_key);
|
||||
DWORD pipe_mode = PIPE_READMODE_BYTE;
|
||||
if (!name)
|
||||
pipe_mode |= pipe_byte ? PIPE_TYPE_BYTE : PIPE_TYPE_MESSAGE;
|
||||
@@ -223,6 +222,12 @@ fhandler_pipe::create (LPSECURITY_ATTRIBUTES sa_ptr, PHANDLE r, PHANDLE w,
|
||||
pipe_mode |= PIPE_TYPE_MESSAGE;
|
||||
}
|
||||
|
||||
if (!name || (open_mode &= PIPE_ADD_PID))
|
||||
{
|
||||
len += __small_sprintf (pipename + len, "%u-", GetCurrentProcessId ());
|
||||
open_mode &= ~PIPE_ADD_PID;
|
||||
}
|
||||
|
||||
open_mode |= PIPE_ACCESS_INBOUND;
|
||||
|
||||
/* Retry CreateNamedPipe as long as the pipe name is in use.
|
||||
|
Reference in New Issue
Block a user