]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Conditionalise the calls to premsg and postmsg in uxcons.c's
authorSimon Tatham <anakin@pobox.com>
Wed, 18 Apr 2012 06:36:46 +0000 (06:36 +0000)
committerSimon Tatham <anakin@pobox.com>
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!

[originally from svn r9462]

unix/uxcons.c

index ce1a49238b4547f131337e658d5238672f866627..73126c021b5024cf475aef8ed99d4ebbf309f472 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);
 }
 
 /*