diff options
author | Jakub Jelen <jjelen@redhat.com> | 2024-03-13 11:20:24 +0100 |
---|---|---|
committer | Jakub Jelen <jjelen@redhat.com> | 2024-03-23 11:48:50 +0100 |
commit | 07cb0be12f4a3d5691f6a580343cb94d658decf5 (patch) | |
tree | ee94018f79f741f41aa509f0687a3da1e2343046 /src/session.c | |
parent | 9d5c31205c8b87970a1efa2d5d8c3ec9b872bc87 (diff) | |
download | libssh-master.tar.gz libssh-master.tar.xz libssh-master.zip |
Fixes: #244
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Sahana Prasad <sahana@redhat.com>
Diffstat (limited to 'src/session.c')
-rw-r--r-- | src/session.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/session.c b/src/session.c index 5b12c16e..279352b6 100644 --- a/src/session.c +++ b/src/session.c @@ -496,6 +496,21 @@ const char* ssh_get_hmac_out(ssh_session session) { } /** + * @internal + * @brief Close the connection socket if it is a socket created by us. + * Does not close the sockets provided by the user through options API. + */ +void +ssh_session_socket_close(ssh_session session) +{ + if (session->opts.fd == SSH_INVALID_SOCKET) { + ssh_socket_close(session->socket); + } + session->alive = 0; + session->session_state = SSH_SESSION_STATE_ERROR; +} + +/** * @brief Disconnect impolitely from a remote host by closing the socket. * * Suitable if you forked and want to destroy this session. @@ -509,8 +524,7 @@ ssh_silent_disconnect(ssh_session session) return; } - ssh_socket_close(session->socket); - session->alive = 0; + ssh_session_socket_close(session); ssh_disconnect(session); } |