diff --git a/include/libssh/channels.h b/include/libssh/channels.h index 343aa7f7..fc03965a 100644 --- a/include/libssh/channels.h +++ b/include/libssh/channels.h @@ -48,11 +48,16 @@ enum ssh_channel_state_e { }; /* The channel has been closed by the remote side */ -#define SSH_CHANNEL_FLAG_CLOSED_REMOTE 0x1 +#define SSH_CHANNEL_FLAG_CLOSED_REMOTE 0x0001 + +/* The channel has been closed locally */ +#define SSH_CHANNEL_FLAG_CLOSED_LOCAL 0x0002 + /* The channel has been freed by the calling program */ -#define SSH_CHANNEL_FLAG_FREED_LOCAL 0x2 +#define SSH_CHANNEL_FLAG_FREED_LOCAL 0x0004 + /* the channel has not yet been bound to a remote one */ -#define SSH_CHANNEL_FLAG_NOT_BOUND 0x4 +#define SSH_CHANNEL_FLAG_NOT_BOUND 0x0008 struct ssh_channel_struct { ssh_session session; /* SSH_SESSION pointer */ diff --git a/src/channels.c b/src/channels.c index cd0b4a06..c73a6b90 100644 --- a/src/channels.c +++ b/src/channels.c @@ -1172,6 +1172,7 @@ int ssh_channel_close(ssh_channel channel) if (rc == SSH_OK) { channel->state = SSH_CHANNEL_STATE_CLOSED; + channel->flags |= SSH_CHANNEL_FLAG_CLOSED_LOCAL; } rc = ssh_channel_flush(channel);