mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Only use the pipe chunking protocol if we know the syslogger should
be catching stderr output, and we are not ourselves the syslogger. Otherwise, go directly to stderr. Bug noticed by Tom Lane. Backpatch as far as 8.0.
This commit is contained in:
@ -42,7 +42,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.187 2007/06/14 01:48:51 adunstan Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.188 2007/07/19 19:13:43 adunstan Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -76,7 +76,7 @@ ErrorContextCallback *error_context_stack = NULL;
|
||||
|
||||
sigjmp_buf *PG_exception_stack = NULL;
|
||||
|
||||
extern pid_t SysLoggerPID;
|
||||
extern bool redirection_done;
|
||||
|
||||
/* GUC parameters */
|
||||
PGErrorVerbosity Log_error_verbosity = PGERROR_VERBOSE;
|
||||
@ -1780,11 +1780,15 @@ send_message_to_server_log(ErrorData *edata)
|
||||
* that's really a pipe to the syslogger process. Unless we're in the
|
||||
* postmaster, and the syslogger process isn't started yet.
|
||||
*/
|
||||
if ((!Redirect_stderr || am_syslogger || (!IsUnderPostmaster && SysLoggerPID==0)) && pgwin32_is_service())
|
||||
if (pgwin32_is_service() && (!redirection_done || am_syslogger) )
|
||||
write_eventlog(edata->elevel, buf.data);
|
||||
else
|
||||
#endif
|
||||
if (Redirect_stderr)
|
||||
/* only use the chunking protocol if we know the syslogger should
|
||||
* be catching stderr output, and we are not ourselves the
|
||||
* syslogger. Otherwise, go directly to stderr.
|
||||
*/
|
||||
if (redirection_done && !am_syslogger)
|
||||
write_pipe_chunks(fileno(stderr), buf.data, buf.len);
|
||||
else
|
||||
write(fileno(stderr), buf.data, buf.len);
|
||||
|
Reference in New Issue
Block a user