qemu-e2k/io
Daniel P. Berrange 57b0cdf152 io: simplify websocket ping reply handling
We must ensure we don't get flooded with ping replies if the outbound
channel is slow. Currently we do this by keeping the ping reply in a
separate temporary buffer and only writing it if the encoutput buffer
is completely empty. This is overly pessimistic, as it is reasonable
to add a ping reply to the encoutput buffer even if it has previous
data in it, as long as that previous data doesn't include a ping
reply.

To track this better, put the ping reply directly into the encoutput
buffer, and then record the size of encoutput at this time in
pong_remain. As we write encoutput to the underlying channel, we
can decrement the pong_remain counter. Once it hits zero, we can
accept further ping replies for transmission.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2017-10-16 16:57:08 +01:00
..
Makefile.objs io: introduce a DNS resolver API 2017-01-23 15:32:46 +00:00
channel-buffer.c io: avoid double-free when closing QIOChannelBuffer 2016-05-26 11:31:09 +05:30
channel-command.c io: add methods to set I/O handlers on AioContext 2017-02-21 11:14:07 +00:00
channel-file.c io: add methods to set I/O handlers on AioContext 2017-02-21 11:14:07 +00:00
channel-socket.c util: remove the obsolete non-blocking connect 2017-09-05 13:21:58 +01:00
channel-tls.c io: add methods to set I/O handlers on AioContext 2017-02-21 11:14:07 +00:00
channel-util.c all: Clean up includes 2016-02-23 12:43:05 +00:00
channel-watch.c io: add methods to set I/O handlers on AioContext 2017-02-21 11:14:07 +00:00
channel-websock.c io: simplify websocket ping reply handling 2017-10-16 16:57:08 +01:00
channel.c io: Add new qio_channel_read{, v}_all_eof functions 2017-09-06 10:11:54 -05:00
dns-resolver.c io: preserve ipv4/ipv6 flags when resolving InetSocketAddress 2017-07-14 14:28:29 +01:00
task.c io: fix possible double free of task error object 2017-01-26 10:26:18 +00:00
trace-events io: add trace events for websockets frame handling 2017-10-04 13:21:53 +01:00