mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07:41 +00:00
Ensure I/O streams are closed when done in GuacamoleHTTPTunnelServlet.
This commit is contained in:
@@ -279,7 +279,12 @@ public abstract class GuacamoleHTTPTunnelServlet extends HttpServlet {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Cache-Control", "no-cache");
|
||||
|
||||
Writer out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));
|
||||
// Get writer for response
|
||||
Writer out = new BufferedWriter(new OutputStreamWriter(
|
||||
response.getOutputStream(), "UTF-8"));
|
||||
|
||||
// Stream data to response, ensuring output stream is closed
|
||||
try {
|
||||
|
||||
// Detach tunnel and throw error if EOF (and we haven't sent any
|
||||
// data yet.
|
||||
@@ -313,6 +318,12 @@ public abstract class GuacamoleHTTPTunnelServlet extends HttpServlet {
|
||||
out.write("0.;");
|
||||
out.flush();
|
||||
response.flushBuffer();
|
||||
}
|
||||
|
||||
// Always close output stream
|
||||
finally {
|
||||
out.close();
|
||||
}
|
||||
|
||||
}
|
||||
catch (GuacamoleException e) {
|
||||
@@ -375,16 +386,33 @@ public abstract class GuacamoleHTTPTunnelServlet extends HttpServlet {
|
||||
// Send data
|
||||
try {
|
||||
|
||||
// Get writer from tunnel
|
||||
GuacamoleWriter writer = tunnel.acquireWriter();
|
||||
|
||||
Reader input = new InputStreamReader(request.getInputStream(), "UTF-8");
|
||||
// Get input reader for HTTP stream
|
||||
Reader input = new InputStreamReader(
|
||||
request.getInputStream(), "UTF-8");
|
||||
|
||||
// Transfer data from input stream to tunnel output, ensuring
|
||||
// input is always closed
|
||||
try {
|
||||
|
||||
// Buffer
|
||||
int length;
|
||||
char[] buffer = new char[8192];
|
||||
|
||||
int length;
|
||||
// Transfer data using buffer
|
||||
while (tunnel.isOpen() &&
|
||||
(length = input.read(buffer, 0, buffer.length)) != -1)
|
||||
writer.write(buffer, 0, length);
|
||||
|
||||
}
|
||||
|
||||
// Close input stream in all cases
|
||||
finally {
|
||||
input.close();
|
||||
}
|
||||
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
|
Reference in New Issue
Block a user