diff common-session.c @ 896:a1a97e98b0c1

Read (and enqueue) packets from interactive input even when we're waiting for a key exchange. This should hopefully fix the situation where "~." doesn't work to terminate a client session when a laptop wakes up. The client will be stuck waiting for a key exchange on a dead connection, so won't have read the escape character
author Matt Johnston <matt@ucc.asn.au>
date Mon, 17 Feb 2014 21:41:06 +0800
parents e78f5ce6e7bb
children bae0b34bc059 b8208506322e
line wrap: on
line diff
--- a/common-session.c	Sat Feb 15 21:42:35 2014 +0800
+++ b/common-session.c	Mon Feb 17 21:41:06 2014 +0800
@@ -153,10 +153,9 @@
 		   SIGCHLD in svr-chansession is the only one currently. */
 		FD_SET(ses.signal_pipe[0], &readfd);
 
-		/* set up for channels which require reading/writing */
-		if (ses.dataallowed) {
-			setchannelfds(&readfd, &writefd);
-		}
+		/* set up for channels which can be read/written */
+		setchannelfds(&readfd, &writefd);
+
 		val = select(ses.maxfd+1, &readfd, &writefd, NULL, &timeout);
 
 		if (exitflag) {
@@ -217,9 +216,7 @@
 
 		/* process pipes etc for the channels, ses.dataallowed == 0
 		 * during rekeying ) */
-		if (ses.dataallowed) {
-			channelio(&readfd, &writefd);
-		}
+		channelio(&readfd, &writefd);
 
 		if (loophandler) {
 			loophandler();