Conditionalise the calls to premsg and postmsg in uxcons.c's
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Apr 2012 06:36:46 +0000 (06:36 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Apr 2012 06:36:46 +0000 (06:36 +0000)
logevent(), which temporarily turn off the raw mode we've put stderr
into, so that they don't get called if the log_eventlog() call between
them is not _actually_ going to write to stderr.

Fixes a bug in which, if you define a Unix PuTTY saved session which
uses 'plink -nc' as a local proxy command and then run PuTTY
backgrounded from the shell with that session loaded, the subprocess
Plink would get SIGTTOU when it tried to muck about with stderr and
the whole thing would grind to a halt. I'm prepared to consider that
acceptable if Plink _really_ wants to write on standard error, but if
it doesn't, it should just carry on working in the background!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9462 cda61777-01e9-0310-a592-d414129be87e

unix/uxcons.c

index ce1a492..73126c0 100644 (file)
@@ -321,10 +321,12 @@ void console_provide_logctx(void *logctx)
 void logevent(void *frontend, const char *string)
 {
     struct termios cf;
-    premsg(&cf);
+    if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE))
+        premsg(&cf);
     if (console_logctx)
        log_eventlog(console_logctx, string);
-    postmsg(&cf);
+    if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE))
+        postmsg(&cf);
 }
 
 /*