#198: _libssh2_channel_close() may hang
---------------------+------------------------------------------------------
Reporter: fd64 | Owner: bagder
Type: defect | Status: accepted
Priority: normal | Milestone: 1.2.7
Component: API | Version: 1.2.7
Resolution: | Keywords:
Blocks: | Blocked By:
---------------------+------------------------------------------------------
Changes (by bagder):
* owner: => bagder
* status: new => accepted
Comment:
What about this patch:
{{{
diff --git a/src/channel.c b/src/channel.c
index ff1fb4d..efe95e6 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -2304,9 +2304,9 @@ int _libssh2_channel_close(LIBSSH2_CHANNEL *
channel)
if (channel->close_state == libssh2_NB_state_sent) {
/* We must wait for the remote SSH_MSG_CHANNEL_CLOSE message */
- while (!channel->remote.close && !rc) {
+ while (!channel->remote.close && !rc &&
+ (session->socket_state != LIBSSH2_SOCKET_DISCONNECTED))
rc = _libssh2_transport_read(session);
- }
}
if(rc != LIBSSH2_ERROR_EAGAIN) {
}}}
-- Ticket URL: <http://trac.libssh2.org/ticket/198#comment:4> libssh2 <http://trac.libssh2.org/> C library for writing portable SSH2 clients _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-develReceived on 2010-12-11