[ https://issues.apache.org/jira/browse/GUACAMOLE-1849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nick Couchman updated GUACAMOLE-1849: ------------------------------------- Priority: Minor (was: Major) > Parser reparses same instructions multiple times in some cases > -------------------------------------------------------------- > > Key: GUACAMOLE-1849 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-1849 > Project: Guacamole > Issue Type: Bug > Components: guacamole-common-js > Affects Versions: 1.5.3, 1.5.2 > Reporter: Darren Foley > Priority: Minor > > When using a tunnel that relies on XHR rather than websockets, parseResponse > in Tunnel.js calls parse.receive(current, true) when > xmlhttprequest.readyState is 3 or 4. When the readyState is 3, setInterval is > used to periodically call parseResponse to check the state, until reaching > readyState 4. This means that the parser.receive call can be made multiple > times for one request. This is supposed to be fine, since we're setting > isBuffer to true, which means we should send in the same message, with > anything new simply tacked onto the end. The startIndex and elementEnd > variables in receive should simply keep track of where we last left off, and > only parse any new instructions. However, this is not what's happening. > Instead, they are getting reset each time and the entire message is parsed > again, re-executing the same instructions. This was really clear in our > customized version of guacamole, as we've added our own instruction which > adds an icon to the top right corner when something is enabled. Due to this > issue, the icon was duplicated many times. I've made a hotfix in our copy of > the js which fixes this when isBuffer is true and retains the existing > behaviour when it's false. I can provide this in a pull request, though I'm > not sure if you'll want to use this change or rework the whole function. > > Note: I believe this bug came in with > d6a01c28e56edb0b0d3bab4459b1f1a75414e999 so it would affect 1.5.2, too, > though I've only tested with 1.5.3. > -- This message was sent by Atlassian Jira (v8.20.10#820010)