diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2018-02-05 11:49:38 +0000 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2018-02-16 12:33:02 +0100 |
commit | d50f09ff23f5509c05e3883440849b27af051f08 (patch) | |
tree | 99481e8302dd16f79b691d3e180a03b281388080 | |
parent | cf0706581bc0c24ab2e9a81ff0fc3efa9482c812 (diff) | |
download | qemu-d50f09ff23f5509c05e3883440849b27af051f08.zip qemu-d50f09ff23f5509c05e3883440849b27af051f08.tar.gz qemu-d50f09ff23f5509c05e3883440849b27af051f08.tar.bz2 |
ui: extend VNC trottling tracing to SASL codepaths
In previous commit:
commit 6aa22a29187e1908f5db738d27c64a9efc8d0bfa
Author: Daniel P. Berrange <berrange@redhat.com>
Date: Mon Dec 18 19:12:27 2017 +0000
ui: add trace events related to VNC client throttling
trace points related to unthrottling client I/O were missed from the
SASL codepaths.
Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-id: 20180205114938.15784-5-berrange@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | ui/vnc-auth-sasl.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c index 8ebd0d3..3751a77 100644 --- a/ui/vnc-auth-sasl.c +++ b/ui/vnc-auth-sasl.c @@ -79,12 +79,23 @@ size_t vnc_client_write_sasl(VncState *vs) vs->sasl.encodedOffset += ret; if (vs->sasl.encodedOffset == vs->sasl.encodedLength) { + bool throttled = vs->force_update_offset != 0; + size_t offset; if (vs->sasl.encodedRawLength >= vs->force_update_offset) { vs->force_update_offset = 0; } else { vs->force_update_offset -= vs->sasl.encodedRawLength; } + if (throttled && vs->force_update_offset == 0) { + trace_vnc_client_unthrottle_forced(vs, vs->ioc); + } + offset = vs->output.offset; buffer_advance(&vs->output, vs->sasl.encodedRawLength); + if (offset >= vs->throttle_output_offset && + vs->output.offset < vs->throttle_output_offset) { + trace_vnc_client_unthrottle_incremental(vs, vs->ioc, + vs->output.offset); + } vs->sasl.encoded = NULL; vs->sasl.encodedOffset = vs->sasl.encodedLength = 0; } |