GUACAMOLE-25: Automatically invalidate output stream due to "ack" ONLY if it's the same stream that received the "ack". It is possible for the output stream to be freed and replaced with a different stream within onack.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/df3347f6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/df3347f6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/df3347f6 Branch: refs/heads/master Commit: df3347f63110c14ce7394352cc144911f862a694 Parents: 4b88066 Author: Michael Jumper <[email protected]> Authored: Sun May 1 23:51:18 2016 -0700 Committer: Michael Jumper <[email protected]> Committed: Mon May 23 21:08:54 2016 -0700 ---------------------------------------------------------------------- guacamole-common-js/src/main/webapp/modules/Client.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/df3347f6/guacamole-common-js/src/main/webapp/modules/Client.js ---------------------------------------------------------------------- diff --git a/guacamole-common-js/src/main/webapp/modules/Client.js b/guacamole-common-js/src/main/webapp/modules/Client.js index 8903f21..060f460 100644 --- a/guacamole-common-js/src/main/webapp/modules/Client.js +++ b/guacamole-common-js/src/main/webapp/modules/Client.js @@ -648,8 +648,9 @@ Guacamole.Client = function(tunnel) { if (stream.onack) stream.onack(new Guacamole.Status(code, reason)); - // If code is an error, invalidate stream - if (code >= 0x0100) { + // If code is an error, invalidate stream if not already + // invalidated by onack handler + if (code >= 0x0100 && output_streams[stream_index] === stream) { stream_indices.free(stream_index); delete output_streams[stream_index]; }
