From 18e62334f9bccd4b9560fb8da154a42ef2ab21eb Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 9 May 2007 19:15:37 +0000
Subject: fix tty close patch (#1651)

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7148 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/dropbear/patches/160-tty_close.patch | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

(limited to 'package/dropbear')

diff --git a/package/dropbear/patches/160-tty_close.patch b/package/dropbear/patches/160-tty_close.patch
index 01b6251b8..c85429ce8 100644
--- a/package/dropbear/patches/160-tty_close.patch
+++ b/package/dropbear/patches/160-tty_close.patch
@@ -1,7 +1,7 @@
 diff -ur db.old/common-channel.c db.dev/common-channel.c
 --- db.old/common-channel.c	2007-02-22 17:17:15.000000000 +0100
 +++ db.dev/common-channel.c	2007-05-06 19:50:19.154943528 +0200
-@@ -309,15 +309,6 @@
+@@ -309,15 +309,15 @@
  			&& (ERRFD_IS_WRITE(channel) || channel->errfd == FD_CLOSED)) {
  		send_msg_channel_eof(channel);
  	}
@@ -14,6 +14,15 @@ diff -ur db.old/common-channel.c db.dev/common-channel.c
 -		TRACE(("sending close, readfd is closed"))
 -		send_msg_channel_close(channel);
 -	}
++
++	/* And if we can't receive any more data from them either, close up (server only) */
++	if (!channel->sent_close
++			&& channel->readfd == FD_CLOSED
++			&& !ERRFD_IS_WRITE(channel)
++			&& !write_pending(channel)) {
++		TRACE(("sending close, readfd is closed"))
++		send_msg_channel_close(channel);
++	}
  }
  
  /* Check whether a deferred (EINPROGRESS) connect() was successful, and
-- 
cgit v1.2.3