From c59b2884a2f7fc953fdb263085830b65e8bdcaef Mon Sep 17 00:00:00 2001 From: Yonit Halperin Date: Thu, 24 May 2012 11:00:33 +0300 Subject: server/red_channel: remove red_channel_client_item_being_sent The above routine was risky, since red_channel_client_init_send_data can also be called with item==NULL. Thus, not all pipe items can be tracked. The one call that was made for this routine was not necessary. --- server/red_channel.c | 19 ------------------- server/red_channel.h | 9 --------- server/red_worker.c | 4 +--- 3 files changed, 1 insertion(+), 31 deletions(-) diff --git a/server/red_channel.c b/server/red_channel.c index a7ef934e..83a9f372 100644 --- a/server/red_channel.c +++ b/server/red_channel.c @@ -1374,25 +1374,6 @@ int red_channel_get_first_socket(RedChannel *channel) RedChannelClient, channel_link)->stream->socket; } -int red_channel_client_item_being_sent(RedChannelClient *rcc, PipeItem *item) -{ - return rcc->send_data.item == item; -} - -int red_channel_item_being_sent(RedChannel *channel, PipeItem *item) -{ - RingItem *link; - RedChannelClient *rcc; - - RING_FOREACH(link, &channel->clients) { - rcc = SPICE_CONTAINEROF(link, RedChannelClient, channel_link); - if (rcc->send_data.item == item) { - return TRUE; - } - } - return FALSE; -} - int red_channel_no_item_being_sent(RedChannel *channel) { RingItem *link; diff --git a/server/red_channel.h b/server/red_channel.h index 54182106..765b74ed 100644 --- a/server/red_channel.h +++ b/server/red_channel.h @@ -432,15 +432,6 @@ int red_channel_client_blocked(RedChannelClient *rcc); /* helper for channels that have complex logic that can possibly ready a send */ int red_channel_client_send_message_pending(RedChannelClient *rcc); -/* returns TRUE if item is being sent by one of the channel clients. This will - * be true if someone called init_send_data but send has not completed (or perhaps - * hasn't even begun, i.e. no one called begin_send_). - * However, note that red_channel_client_init_send_data can also be called with - * item==NULL, thus not all pipe items can be tracked. - */ -int red_channel_item_being_sent(RedChannel *channel, PipeItem *item); -int red_channel_client_item_being_sent(RedChannelClient *rcc, PipeItem *item); - int red_channel_no_item_being_sent(RedChannel *channel); int red_channel_client_no_item_being_sent(RedChannelClient *rcc); diff --git a/server/red_worker.c b/server/red_worker.c index 9e5624ba..2709486b 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -10364,9 +10364,7 @@ static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item) spice_printerr("timeout"); red_channel_client_disconnect(rcc); } else { - if (red_channel_client_item_being_sent(rcc, item)) { - red_wait_outgoing_item(rcc); - } + red_wait_outgoing_item(rcc); } channel->channel_cbs.release_item(rcc, item, FALSE); } -- cgit