You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by "Ignasi Barrera (JIRA)" <ji...@apache.org> on 2017/09/21 13:33:00 UTC
[jira] [Created] (GUACAMOLE-385) Add a convenience filter to cache
the contents of HTTP requests
Ignasi Barrera created GUACAMOLE-385:
----------------------------------------
Summary: Add a convenience filter to cache the contents of HTTP requests
Key: GUACAMOLE-385
URL: https://issues.apache.org/jira/browse/GUACAMOLE-385
Project: Guacamole
Issue Type: Improvement
Components: guacamole-common
Affects Versions: 0.9.13-incubating
Environment: Apache Tomcat >= 7
Servlet 3.0
Reporter: Ignasi Barrera
Some implementations of the HTTP servlet request do not allow a free use of the {{getInputStream()}} and {{getParameter()}} methods. This is especially annoying in Apache Tomcat >= 7 and Servlet 3.0, where invoking the {{getParameter()}} method consumes the {{InputStream}} (making later uses of it fail) and consuming the InputStream makes later {{getParameter()}} calls fail to find the parameters, as the request body has been consumed.
This causes issues for tunnel servlets that need to access the request parameters, commonly used to pass authentication tokens or additional info provided in the {{tunnel.connect()}} call, as the tunnel needs later access to the request input stream. Applications using the popular Spring framework may be affected too, since some of its common filters also access the request parameters.
If the request parameters are accessed in the tunnel servlet or a previous filter, the {{doWrite}} method in the base HTTP tunnel servlet always gets an already consumed {{InputStream}} and does not write anything to the socket, causing an eventual timeout in the client.
This is related to: [GUAC-1252|https://glyptodon.org/jira/browse/GUAC-1252], but none of the solutions there fix the issue in Tomcat 7 nor the existing workarounds found in StackOverflow and the referenced threads.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)