Hey, On Thu, Mar 26, 2015 at 05:52:05PM +0300, Denis Kirjanov wrote: > Since the spice protocol is LE send the number of channels in > the proper byte order > > Signed-off-by: Denis Kirjanov <kda@xxxxxxxxxxxxxxxxx> > --- > server/reds.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/server/reds.c b/server/reds.c > index f61d5d3..468ac9c 100644 > --- a/server/reds.c > +++ b/server/reds.c > @@ -37,6 +37,8 @@ > #include <ctype.h> > #include <stdbool.h> > > +#include <glib.h> > + > #include <openssl/err.h> > > #if HAVE_SASL > @@ -874,7 +876,7 @@ void reds_fill_channels(SpiceMsgChannels *channels_info) > used_channels++; > } > > - channels_info->num_of_channels = used_channels; > + channels_info->num_of_channels = GUINT32_TO_LE(used_channels); Are you sure this is needed? In other words, what concrete bug are you observing without that change? reds_fill_channels is called from main_channel_marshall_channels(), which then passes the filled SpiceMsgChannels instance to spice_marshall_msg_main_channels_list() spice_marshall_msg_* is generated from the description of the SPICE protocol available in spice.proto/spice1.proto. These generated marshallers are usually correct from an endianness point of view. This specific function is defined in spice-common/common/generated_server_marshallers.c and does: spice_marshaller_add_uint32(m, src->num_of_channels); spice_marshaller_add_uint32() calls spice_marshaller_add_uint32() which is #ifdef WORDS_BIGENDIAN #define write_uint32(ptr,v) (*((uint32_t *)(ptr)) = SPICE_BYTESWAP32((uint32_t)(v))) #else #define write_uint32(ptr,v) (*((uint32_t *)(ptr)) = v) #endif so I would say the existing code is correct, and this patch unneeded. Christophe
Attachment:
pgp0gaAeQstRl.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel