From: "Daniel P. Berrange" <berrange@redhat.com>
To: Brandon Carpenter <brandon.carpenter@cypherpath.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 5/6] io: Ignore websocket PING and PONG frames
Date: Mon, 11 Sep 2017 10:04:40 +0100 [thread overview]
Message-ID: <20170911090440.GF21444@redhat.com> (raw)
In-Reply-To: <20170911083846.GD21444@redhat.com>
On Mon, Sep 11, 2017 at 09:38:46AM +0100, Daniel P. Berrange wrote:
> On Fri, Sep 08, 2017 at 10:38:00AM -0700, Brandon Carpenter wrote:
> > Keep pings and gratuitous pongs generated by web browsers from killing
> > websocket connections.
> >
> > Signed-off-by: Brandon Carpenter <brandon.carpenter@cypherpath.com>
> > ---
> > io/channel-websock.c | 21 +++++++++++++++++----
> > 1 file changed, 17 insertions(+), 4 deletions(-)
> >
> > diff --git a/io/channel-websock.c b/io/channel-websock.c
> > index 3183aeff77..50387050d5 100644
> > --- a/io/channel-websock.c
> > +++ b/io/channel-websock.c
> > @@ -86,6 +86,7 @@
> > #define QIO_CHANNEL_WEBSOCK_HEADER_FIELD_OPCODE 0x0f
> > #define QIO_CHANNEL_WEBSOCK_HEADER_FIELD_HAS_MASK 0x80
> > #define QIO_CHANNEL_WEBSOCK_HEADER_FIELD_PAYLOAD_LEN 0x7f
> > +#define QIO_CHANNEL_WEBSOCK_CONTROL_OPCODE_MASK 0x8
> >
> > typedef struct QIOChannelWebsockHeader QIOChannelWebsockHeader;
> >
> > @@ -565,8 +566,11 @@ static int qio_channel_websock_decode_header(QIOChannelWebsock *ioc,
> > return -1;
> > }
> > } else {
> > - if (opcode != QIO_CHANNEL_WEBSOCK_OPCODE_BINARY_FRAME) {
> > - error_setg(errp, "only binary websocket frames are supported");
> > + if (opcode != QIO_CHANNEL_WEBSOCK_OPCODE_BINARY_FRAME &&
> > + opcode != QIO_CHANNEL_WEBSOCK_OPCODE_PING &&
> > + opcode != QIO_CHANNEL_WEBSOCK_OPCODE_PONG) {
>
> Why would we need to ignore PONG ? A client should only send a PONG in
> response to a PING that we send, and we never send PINGs. So if we
> received a PONG that would be a serious error by the client, which should
> cause us to close the connection IMHO>
Never mind, I've just seen that the RFC allows clients to send an
unsolicited PONG
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2017-09-11 9:04 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-24 18:15 [Qemu-devel] [PATCH] io: Always remove an old channel watch before adding a new one Brandon Carpenter
2017-07-24 18:42 ` [Qemu-devel] [PATCH] io: Improve websocket support by becoming more RFC compliant Brandon Carpenter
2017-07-25 8:38 ` Daniel P. Berrange
2017-07-25 15:59 ` Brandon Carpenter
2017-09-08 17:37 ` [Qemu-devel] [PATCH v2 0/6] Update websocket code to more fully support the RFC Brandon Carpenter
2017-09-08 18:01 ` Eric Blake
2017-09-08 18:11 ` Brandon Carpenter
2017-09-08 18:15 ` Eric Blake
2017-09-08 17:37 ` [Qemu-devel] [PATCH v2 1/6] io: Always remove an old channel watch before adding a new one Brandon Carpenter
2017-09-08 17:37 ` [Qemu-devel] [PATCH v2 2/6] io: Small updates in preparation for websocket changes Brandon Carpenter
2017-09-08 17:37 ` [Qemu-devel] [PATCH v2 3/6] io: Add support for fragmented websocket binary frames Brandon Carpenter
2017-09-08 17:37 ` [Qemu-devel] [PATCH v2 4/6] io: Allow empty websocket payload Brandon Carpenter
2017-09-08 17:38 ` [Qemu-devel] [PATCH v2 5/6] io: Ignore websocket PING and PONG frames Brandon Carpenter
2017-09-11 8:38 ` Daniel P. Berrange
2017-09-11 9:04 ` Daniel P. Berrange [this message]
2017-09-08 17:38 ` [Qemu-devel] [PATCH v2 6/6] io: Reply to ping frames Brandon Carpenter
2017-09-11 8:50 ` Daniel P. Berrange
2017-09-11 17:03 ` Brandon Carpenter
2017-09-11 17:10 ` Daniel P. Berrange
2017-09-11 19:04 ` Brandon Carpenter
2017-09-12 8:57 ` Daniel P. Berrange
2017-09-11 17:37 ` Daniel P. Berrange
2017-09-11 17:43 ` Brandon Carpenter
2017-09-12 9:01 ` Daniel P. Berrange
2017-09-12 15:29 ` Brandon Carpenter
2017-07-24 21:22 ` [Qemu-devel] [PATCH] io: Always remove an old channel watch before adding a new one Paolo Bonzini
2017-07-25 8:36 ` Daniel P. Berrange
2017-09-08 16:18 ` Brandon Carpenter
2017-09-08 16:22 ` Daniel P. Berrange
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170911090440.GF21444@redhat.com \
--to=berrange@redhat.com \
--cc=brandon.carpenter@cypherpath.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.