fix tty close patch (#1651)

SVN-Revision: 7148
This commit is contained in:
Felix Fietkau 2007-05-09 19:15:37 +00:00
parent d54c1ecd5f
commit 2b4cd792c1

View File

@ -1,7 +1,7 @@
diff -ur db.old/common-channel.c db.dev/common-channel.c 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.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 +++ 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)) { && (ERRFD_IS_WRITE(channel) || channel->errfd == FD_CLOSED)) {
send_msg_channel_eof(channel); 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")) - TRACE(("sending close, readfd is closed"))
- send_msg_channel_close(channel); - 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 /* Check whether a deferred (EINPROGRESS) connect() was successful, and