Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Fri, 2017-02-10 at 14:02 +0000, Frediano Ziglio wrote: > Do not make it assume vec contains IOV_MAX elements. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/red-channel-client.c | 12 +++++++----- > server/red-channel-client.h | 4 ++-- > server/red-channel.h | 2 +- > 3 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/server/red-channel-client.c b/server/red-channel- > client.c > index 5ef6fd4..68f133a 100644 > --- a/server/red-channel-client.c > +++ b/server/red-channel-client.c > @@ -398,13 +398,13 @@ int red_channel_client_get_out_msg_size(void > *opaque) > return rcc->priv->send_data.size; > } > > -void red_channel_client_prepare_out_msg(void *opaque, struct iovec > *vec, > - int *vec_size, int pos) > +int red_channel_client_prepare_out_msg(void *opaque, struct iovec > *vec, > + int vec_size, int pos) > { > RedChannelClient *rcc = RED_CHANNEL_CLIENT(opaque); > > - *vec_size = spice_marshaller_fill_iovec(rcc->priv- > >send_data.marshaller, > - vec, IOV_MAX, pos); > + return spice_marshaller_fill_iovec(rcc->priv- > >send_data.marshaller, > + vec, vec_size, pos); > } > > void red_channel_client_on_out_block(void *opaque) > @@ -1014,7 +1014,9 @@ static void red_peer_handle_outgoing(RedsStream > *stream, OutgoingHandler *handle > } > > for (;;) { > - handler->cb->prepare(handler->opaque, handler->vec, > &handler->vec_size, handler->pos); > + handler->vec_size = > + handler->cb->prepare(handler->opaque, handler->vec, > G_N_ELEMENTS(handler->vec), > + handler->pos); > n = reds_stream_writev(stream, handler->vec, handler- > >vec_size); > if (n == -1) { > switch (errno) { > diff --git a/server/red-channel-client.h b/server/red-channel- > client.h > index fada609..3c9fcec 100644 > --- a/server/red-channel-client.h > +++ b/server/red-channel-client.h > @@ -178,8 +178,8 @@ RedChannel* > red_channel_client_get_channel(RedChannelClient *rcc); > void red_channel_client_on_output(void *opaque, int n); > void red_channel_client_on_input(void *opaque, int n); > int red_channel_client_get_out_msg_size(void *opaque); > -void red_channel_client_prepare_out_msg(void *opaque, struct iovec > *vec, > - int *vec_size, int > pos); > +int red_channel_client_prepare_out_msg(void *opaque, struct iovec > *vec, > + int vec_size, int pos); > void red_channel_client_on_out_block(void *opaque); > void red_channel_client_on_out_msg_done(void *opaque); > > diff --git a/server/red-channel.h b/server/red-channel.h > index f2866f5..a187087 100644 > --- a/server/red-channel.h > +++ b/server/red-channel.h > @@ -80,7 +80,7 @@ typedef struct IncomingHandlerInterface { > } IncomingHandlerInterface; > > typedef int (*get_outgoing_msg_size_proc)(void *opaque); > -typedef void (*prepare_outgoing_proc)(void *opaque, struct iovec > *vec, int *vec_size, int pos); > +typedef int (*prepare_outgoing_proc)(void *opaque, struct iovec > *vec, int vec_size, int pos); > typedef void (*on_outgoing_error_proc)(void *opaque); > typedef void (*on_outgoing_block_proc)(void *opaque); > typedef void (*on_outgoing_msg_done_proc)(void *opaque); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel