Hey, On Tue, Feb 28, 2017 at 10:58:47AM +0000, Frediano Ziglio wrote: > This allows the connection to early fail in case initial bytes > are not correct. > This allows for instance VNC client to graceful fail connecting > to a spice-server. This happens easily as the two protocols > share the same range of ports. > > This resolves rhbz#1416692. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > Tested-by: Daniel P. Berrange <berrange@xxxxxxxxxx> > Acked-by: Uri Lublin <uril@xxxxxxxxxx> This looks good to me, though I would not keep the Tested-by/Acked-by that were there on the previous patch. Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> > --- > server/reds.c | 28 ++++++++++++++++++++-------- > 1 file changed, 20 insertions(+), 8 deletions(-) > > This patch is for 0.12 branch, backported from master. > > diff --git a/server/reds.c b/server/reds.c > index 9150454..f439a36 100644 > --- a/server/reds.c > +++ b/server/reds.c > @@ -2192,12 +2192,6 @@ static void reds_handle_read_header_done(void *opaque) > header->minor_version = GUINT32_FROM_LE(header->minor_version); > header->size = GUINT32_FROM_LE(header->size); > > - if (header->magic != SPICE_MAGIC) { > - reds_send_link_error(link, SPICE_LINK_ERR_INVALID_MAGIC); > - reds_link_free(link); > - return; > - } > - > if (header->major_version != SPICE_VERSION_MAJOR) { > if (header->major_version > 0) { > reds_send_link_error(link, SPICE_LINK_ERR_VERSION_MISMATCH); > @@ -2227,13 +2221,31 @@ static void reds_handle_read_header_done(void *opaque) > link); > } > > +static void reds_handle_read_magic_done(void *opaque) > +{ > + RedLinkInfo *link = (RedLinkInfo *)opaque; > + const SpiceLinkHeader *header = &link->link_header; > + > + if (header->magic != SPICE_MAGIC) { > + reds_send_link_error(link, SPICE_LINK_ERR_INVALID_MAGIC); > + reds_link_free(link); > + return; > + } > + > + reds_stream_async_read(link->stream, > + ((uint8_t *)&link->link_header) + sizeof(header->magic), > + sizeof(SpiceLinkHeader) - sizeof(header->magic), > + reds_handle_read_header_done, > + link); > +} > + > static void reds_handle_new_link(RedLinkInfo *link) > { > reds_stream_set_async_error_handler(link->stream, reds_handle_link_error); > reds_stream_async_read(link->stream, > (uint8_t *)&link->link_header, > - sizeof(SpiceLinkHeader), > - reds_handle_read_header_done, > + sizeof(link->link_header.magic), > + reds_handle_read_magic_done, > link); > } > > -- > 2.9.3 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel