*
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.188 2007/07/19 19:13:43 adunstan Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.189 2007/07/19 21:58:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
    /* Write to stderr, if enabled */
    if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == DestDebug)
    {
+       /*
+        * Use the chunking protocol if we know the syslogger should
+        * be catching stderr output, and we are not ourselves the
+        * syslogger.  Otherwise, just do a vanilla write to stderr.
+        */
+       if (redirection_done && !am_syslogger)
+           write_pipe_chunks(fileno(stderr), buf.data, buf.len);
 #ifdef WIN32
-
        /*
         * In a win32 service environment, there is no usable stderr. Capture
         * anything going there and write it to the eventlog instead.
         *
-        * If stderr redirection is active, it's ok to write to stderr because
-        * that's really a pipe to the syslogger process. Unless we're in the
-        * postmaster, and the syslogger process isn't started yet.
+        * If stderr redirection is active, it was OK to write to stderr above
+        * because that's really a pipe to the syslogger process.
         */
-       if (pgwin32_is_service() && (!redirection_done || am_syslogger) )
+       else if (pgwin32_is_service())
            write_eventlog(edata->elevel, buf.data);
-       else
 #endif
-           /* 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);
+       else
+           write(fileno(stderr), buf.data, buf.len);
    }
 
    /* If in the syslogger process, try to write messages direct to file */