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.
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 only happens if the media type of the request is application/x-www-form-urlencoded.
This is related to: GUAC-1252.