summaryrefslogtreecommitdiff
path: root/server/red-channel.c
diff options
context:
space:
mode:
authorMarc-Andre Lureau <marcandre.lureau@gmail.com>2016-01-14 22:01:07 +0100
committerFrediano Ziglio <fziglio@redhat.com>2016-01-22 13:22:33 +0000
commit3d9ea0bb6ba5e94949444e8f848008b4dbe80a49 (patch)
treebfa6e0de00e59980a148a6bdc3af108ecee5b9ac /server/red-channel.c
parente5fa7f4740d817b905379e6ffccb135cf1aa98e5 (diff)
channel: do not call pipe_add with null items
If the creator was not able to produce the item, no need to call pipe_add(). Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com> Acked-by: Frediano Ziglio <fziglio@redhat>
Diffstat (limited to 'server/red-channel.c')
-rw-r--r--server/red-channel.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/server/red-channel.c b/server/red-channel.c
index 9ea7ca50..fd414933 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -2233,7 +2233,7 @@ typedef int (*rcc_item_cond_t)(RedChannelClient *rcc, PipeItem *item);
* @channel: a channel
* @creator: a callback to create pipe item (not null)
* @data: the data to pass to the creator
- * @pipe_add: a callback to add pipe items (not null)
+ * @pipe_add: a callback to add non-null pipe items (not null)
**/
static void red_channel_pipes_create_batch(RedChannel *channel,
new_pipe_item_t creator, void *data,
@@ -2250,7 +2250,9 @@ static void red_channel_pipes_create_batch(RedChannel *channel,
RING_FOREACH_SAFE(link, next, &channel->clients) {
rcc = SPICE_CONTAINEROF(link, RedChannelClient, channel_link);
item = (*creator)(rcc, data, num++);
- (*pipe_add)(rcc, item);
+ if (item) {
+ (*pipe_add)(rcc, item);
+ }
}
}