Subject: RE: libssh2 hangs in channel_close()

RE: libssh2 hangs in channel_close()

From: Daniel Stenberg <daniel_at_haxx.se>
Date: Tue, 13 Apr 2010 11:26:03 +0200 (CEST)

On Tue, 13 Apr 2010, Daniel Stenberg wrote:

> Exhibit what behavior exactly? If libssh2 skips the waiting for the remote
> EOF, what happens? Peter's fix added both sending and waiting, and I think
> what we suggest is that we drop the waiting.

Here's the specific change I suggest:

--- a/src/channel.c
+++ b/src/channel.c
@@ -2221,9 +2221,8 @@ channel_close(LIBSSH2_CHANNEL * channel)
          if ((retcode = channel_send_eof(channel)))
              return retcode;

- if (!channel->remote.eof)
- if ((retcode = channel_wait_eof(channel)))
- return retcode;
+ /* ignore if we have received a remote eof or not, as it is now too
+ late for us to wait for it. Continue closing! */

      if (channel->close_state == libssh2_NB_state_idle) {
          _libssh2_debug(session, LIBSSH2_TRACE_CONN, "Closing channel %lu/%lu",

-- 
  / daniel.haxx.se
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2010-04-13