- djm@cvs.openbsd.org 2008/12/09 02:38:18
     [clientloop.c]
     The ~C escape handler does not work correctly for multiplexed sessions -
     it opens a commandline on the master session, instead of on the slave
     that requested it. Disable it on slave sessions until such time as it
     is fixed; bz#1543 report from Adrian Bridgett via Colin Watson
     ok markus@
diff --git a/clientloop.c b/clientloop.c
index df45458..0d22842 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.205 2008/12/02 19:01:07 markus Exp $ */
+/* $OpenBSD: clientloop.c,v 1.206 2008/12/09 02:38:18 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1042,7 +1042,6 @@
 Supported escape sequences:\r\n\
   %c.  - terminate session\r\n\
   %cB  - send a BREAK to the remote system\r\n\
-  %cC  - open a command line\r\n\
   %cR  - Request rekey (SSH protocol 2 only)\r\n\
   %c#  - list forwarded connections\r\n\
   %c?  - this message\r\n\
@@ -1051,8 +1050,7 @@
 					    escape_char, escape_char,
 					    escape_char, escape_char,
 					    escape_char, escape_char,
-					    escape_char, escape_char,
-					    escape_char);
+					    escape_char, escape_char);
 				} else {
 					snprintf(string, sizeof string,
 "%c?\r\n\
@@ -1087,6 +1085,8 @@
 				continue;
 
 			case 'C':
+				if (c && c->ctl_fd != -1)
+					goto noescape;
 				process_cmdline();
 				continue;