From adfb2bcc756db17ba147f9f606e0ddf7b7cef04a Mon Sep 17 00:00:00 2001 From: Sahana Prasad Date: Mon, 14 Aug 2023 10:42:15 +0200 Subject: [PATCH] Revert the control flow callback in commit https://gitlab.com/libssh/libssh-mirror/-/commit/6f029598c78dd999b3773ce1bc54e390d5b7ec57 Signed-off-by: Sahana Prasad Reviewed-by: Jakub Jelen --- src/packet.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/packet.c b/src/packet.c index 5c811292..2b4a4e78 100644 --- a/src/packet.c +++ b/src/packet.c @@ -1399,12 +1399,37 @@ error: return processed; } +static void ssh_packet_socket_controlflow_callback(int code, void *userdata) +{ + ssh_session session = userdata; + struct ssh_iterator *it; + ssh_channel channel; + + if (code == SSH_SOCKET_FLOW_WRITEWONTBLOCK) { + SSH_LOG(SSH_LOG_TRACE, "sending channel_write_wontblock callback"); + + /* the out pipe is empty so we can forward this to channels */ + it = ssh_list_get_iterator(session->channels); + while (it != NULL) { + channel = ssh_iterator_value(ssh_channel, it); + ssh_callbacks_execute_list(channel->callbacks, + ssh_channel_callbacks, + channel_write_wontblock_function, + session, + channel, + channel->remote_window); + it = it->next; + } + } +} + void ssh_packet_register_socket_callback(ssh_session session, ssh_socket s) { struct ssh_socket_callbacks_struct *callbacks = &session->socket_callbacks; callbacks->data = ssh_packet_socket_callback; callbacks->connected = NULL; + callbacks->controlflow = ssh_packet_socket_controlflow_callback; callbacks->userdata = session; ssh_socket_set_callbacks(s, callbacks); }