There is exactly one user in RedChannel, and this can be reimplemented using already public RedChannelClient API. No need for an extra function very specialized function with a not great name. This commit thus removes one method from RedChannelClient public API, and replaces it with an equivalent private helper in RedChannel. Signed-off-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> --- Changes since v1 - use FOREACH_CLIENT - slightly better commit log server/red-channel-client.c | 9 --------- server/red-channel-client.h | 1 - server/red-channel.c | 15 ++++++++++++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/server/red-channel-client.c b/server/red-channel-client.c index 34202c492..8f7308628 100644 --- a/server/red-channel-client.c +++ b/server/red-channel-client.c @@ -1848,15 +1848,6 @@ bool red_channel_client_wait_outgoing_item(RedChannelClient *rcc, } } -void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc) -{ - if (red_channel_client_is_blocked(rcc) || !g_queue_is_empty(&rcc->priv->pipe)) { - red_channel_client_disconnect(rcc); - } else { - spice_assert(red_channel_client_no_item_being_sent(rcc)); - } -} - gboolean red_channel_client_no_item_being_sent(RedChannelClient *rcc) { return !rcc || (rcc->priv->send_data.size == 0); diff --git a/server/red-channel-client.h b/server/red-channel-client.h index f5e04df78..732fbdd59 100644 --- a/server/red-channel-client.h +++ b/server/red-channel-client.h @@ -143,7 +143,6 @@ bool red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc, int64_t timeout); bool red_channel_client_wait_outgoing_item(RedChannelClient *rcc, int64_t timeout); -void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc); RedChannel* red_channel_client_get_channel(RedChannelClient *rcc); diff --git a/server/red-channel.c b/server/red-channel.c index c24b97722..b8f4f54e8 100644 --- a/server/red-channel.c +++ b/server/red-channel.c @@ -627,6 +627,19 @@ uint32_t red_channel_sum_pipes_size(RedChannel *channel) return sum; } +static void red_channel_disconnect_if_pending_send(RedChannel *channel) +{ + RedChannelClient *rcc; + + FOREACH_CLIENT(channel, rcc) { + if (red_channel_client_is_blocked(rcc) || !red_channel_client_pipe_is_empty(rcc)) { + red_channel_client_disconnect(rcc); + } else { + spice_assert(red_channel_client_no_item_being_sent(rcc)); + } + } +} + bool red_channel_wait_all_sent(RedChannel *channel, int64_t timeout) { @@ -654,7 +667,7 @@ bool red_channel_wait_all_sent(RedChannel *channel, if (max_pipe_size || blocked) { spice_warning("timeout: pending out messages exist (pipe-size %u, blocked %d)", max_pipe_size, blocked); - red_channel_apply_clients(channel, red_channel_client_disconnect_if_pending_send); + red_channel_disconnect_if_pending_send(channel); return FALSE; } else { spice_assert(red_channel_no_item_being_sent(channel)); -- 2.13.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel