diff --git a/src/connector.c b/src/connector.c index c9f2cf03..56716749 100644 --- a/src/connector.c +++ b/src/connector.c @@ -326,35 +326,40 @@ static void ssh_connector_fd_in_cb(ssh_connector connector) /** @internal * @brief Callback called when a poll event is received on an output fd */ -static void ssh_connector_fd_out_cb(ssh_connector connector){ +static void +ssh_connector_fd_out_cb(ssh_connector connector) +{ unsigned char buffer[CHUNKSIZE]; ssize_t r; ssize_t w; ssize_t total = 0; - SSH_LOG(SSH_LOG_TRACE, "connector POLLOUT event for fd %d", connector->out_fd); + SSH_LOG(SSH_LOG_TRACE, "connector POLLOUT event for fd %d", + connector->out_fd); - if(connector->in_available){ - if (connector->in_channel != NULL){ - r = ssh_channel_read_nonblocking(connector->in_channel, buffer, CHUNKSIZE, 0); - if(r == SSH_ERROR){ + if (connector->in_available) { + if (connector->in_channel != NULL) { + r = ssh_channel_read_nonblocking(connector->in_channel, buffer, + CHUNKSIZE, 0); + if (r == SSH_ERROR) { ssh_connector_except_channel(connector, connector->in_channel); return; - } else if(r == 0 && ssh_channel_is_eof(connector->in_channel)){ + } else if (r == 0 && ssh_channel_is_eof(connector->in_channel)) { close(connector->out_fd); connector->out_fd = SSH_INVALID_SOCKET; return; - } else if(r>0) { + } else if (r > 0) { /* loop around write in case the write blocks even for CHUNKSIZE bytes */ - while (total != r){ - w = ssh_connector_fd_write(connector, buffer + total, r - total); - if (w < 0){ + while (total != r) { + w = ssh_connector_fd_write(connector, buffer + total, + r - total); + if (w < 0) { ssh_connector_except(connector, connector->out_fd); return; } total += w; } } - } else if (connector->in_fd != SSH_INVALID_SOCKET){ + } else if (connector->in_fd != SSH_INVALID_SOCKET) { /* fallback on the socket input callback */ connector->out_wontblock = 1; ssh_connector_fd_in_cb(connector);