- markus@cvs.openbsd.org 2002/01/10 11:13:29
     [serverloop.c]
     skip client_alive_check until there are channels; ok beck@
diff --git a/ChangeLog b/ChangeLog
index ad9e3fb..3826cd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -110,6 +110,9 @@
      [channels.c nchan.c]
      replace buffer_consume(b, buffer_len(b)) with buffer_clear(b); 
      ok provos@
+   - markus@cvs.openbsd.org 2002/01/10 11:13:29
+     [serverloop.c]
+     skip client_alive_check until there are channels; ok beck@
 
 
 20020121
@@ -7258,4 +7261,4 @@
  - Wrote replacements for strlcpy and mkdtemp
  - Released 1.0pre1
 
-$Id: ChangeLog,v 1.1754 2002/01/22 12:21:15 djm Exp $
+$Id: ChangeLog,v 1.1755 2002/01/22 12:21:39 djm Exp $
diff --git a/serverloop.c b/serverloop.c
index 0c75b05..39d9920 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -35,7 +35,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: serverloop.c,v 1.93 2001/12/28 15:06:00 markus Exp $");
+RCSID("$OpenBSD: serverloop.c,v 1.94 2002/01/10 11:13:29 markus Exp $");
 
 #include "xmalloc.h"
 #include "packet.h"
@@ -209,15 +209,21 @@
 static void
 client_alive_check(void)
 {
+	static int had_channel = 0;
 	int id;
 
+	id = channel_find_open();
+	if (id == -1) {
+		if (!had_channel)
+			return;
+		packet_disconnect("No open channels after timeout!");
+	}
+	had_channel = 1;
+
 	/* timeout, check to see how many we have had */
 	if (++client_alive_timeouts > options.client_alive_count_max)
 		packet_disconnect("Timeout, your session not responding.");
 
-	id = channel_find_open();
-	if (id == -1)
-		packet_disconnect("No open channels after timeout!");
 	/*
 	 * send a bogus channel request with "wantreply",
 	 * we should get back a failure