From a69d89bb459fb47880b03bc003479b1d98284c2e Mon Sep 17 00:00:00 2001
From: Ben Lindstrom <mouring@eviladmin.org>
Date: Wed, 9 May 2001 00:01:18 +0000
Subject: [PATCH] I have no clue how this file was mised.. <frown>

   - markus@cvs.openbsd.org 2001/05/08 19:17:31
     [channels.c serverloop.c clientloop.c]
     adds correct error reporting to async connect()s
     fixes the server-discards-data-before-connected-bug found by
     onoe@sm.sony.co.jp
---
 ChangeLog    |  4 ++--
 clientloop.c | 19 ++++++++++---------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d215a6151..4caffa290 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,7 +4,7 @@
      [cli.c]
      cli_read() fails to catch SIGINT + overflow; from obdb@zzlevo.net
    - markus@cvs.openbsd.org 2001/05/08 19:17:31
-     [channels.c serverloop.c]
+     [channels.c serverloop.c clientloop.c]
      adds correct error reporting to async connect()s
      fixes the server-discards-data-before-connected-bug found by 
      onoe@sm.sony.co.jp
@@ -5379,4 +5379,4 @@
  - Wrote replacements for strlcpy and mkdtemp
  - Released 1.0pre1
 
-$Id: ChangeLog,v 1.1211 2001/05/08 23:58:37 mouring Exp $
+$Id: ChangeLog,v 1.1212 2001/05/09 00:01:18 mouring Exp $
diff --git a/clientloop.c b/clientloop.c
index 3294b0cfe..b2b7debc8 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -59,7 +59,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: clientloop.c,v 1.68 2001/05/06 21:45:14 markus Exp $");
+RCSID("$OpenBSD: clientloop.c,v 1.69 2001/05/08 19:17:31 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -1150,20 +1150,21 @@ client_input_channel_open(int type, int plen, void *ctxt)
 		c->remote_id = rchan;
 		c->remote_window = rwindow;
 		c->remote_maxpacket = rmaxpack;
-
-		packet_start(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION);
-		packet_put_int(c->remote_id);
-		packet_put_int(c->self);
-		packet_put_int(c->local_window);
-		packet_put_int(c->local_maxpacket);
-		packet_send();
+		if (c->type != SSH_CHANNEL_CONNECTING) {
+			packet_start(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION);
+			packet_put_int(c->remote_id);
+			packet_put_int(c->self);
+			packet_put_int(c->local_window);
+			packet_put_int(c->local_maxpacket);
+			packet_send();
+		}
 	} else {
 		debug("failure %s", ctype);
 		packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE);
 		packet_put_int(rchan);
 		packet_put_int(SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED);
 		if (!(datafellows & SSH_BUG_OPENFAILURE)) {
-			packet_put_cstring("bla bla");
+			packet_put_cstring("open failed");
 			packet_put_cstring("");
 		}
 		packet_send();