From c101e55c7f933bd86d65640f49e78d50e46751c5 Mon Sep 17 00:00:00 2001 From: Mikhail Mazursky Date: Sat, 26 Oct 2013 12:43:06 +0600 Subject: [PATCH] [Bug 420374] Call super.close() in a finally block Signed-off-by: Mikhail Mazursky --- .../jetty/util/MultiPartOutputStream.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java index 024bb6378ab..85cc700254b 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java @@ -35,12 +35,12 @@ public class MultiPartOutputStream extends FilterOutputStream private static final byte[] __CRLF={'\r','\n'}; private static final byte[] __DASHDASH={'-','-'}; - public static String MULTIPART_MIXED="multipart/mixed"; - public static String MULTIPART_X_MIXED_REPLACE="multipart/x-mixed-replace"; + public static final String MULTIPART_MIXED="multipart/mixed"; + public static final String MULTIPART_X_MIXED_REPLACE="multipart/x-mixed-replace"; /* ------------------------------------------------------------ */ - private String boundary; - private byte[] boundaryBytes; + private final String boundary; + private final byte[] boundaryBytes; /* ------------------------------------------------------------ */ private boolean inPart=false; @@ -54,8 +54,15 @@ public class MultiPartOutputStream extends FilterOutputStream boundary = "jetty"+System.identityHashCode(this)+ Long.toString(System.currentTimeMillis(),36); boundaryBytes=boundary.getBytes(StringUtil.__ISO_8859_1); + } - inPart=false; + public MultiPartOutputStream(OutputStream out, String boundary) + throws IOException + { + super(out); + + this.boundary = boundary; + boundaryBytes=boundary.getBytes(StringUtil.__ISO_8859_1); } /* ------------------------------------------------------------ */ @@ -66,14 +73,20 @@ public class MultiPartOutputStream extends FilterOutputStream public void close() throws IOException { - if (inPart) + try + { + if (inPart) + out.write(__CRLF); + out.write(__DASHDASH); + out.write(boundaryBytes); + out.write(__DASHDASH); out.write(__CRLF); - out.write(__DASHDASH); - out.write(boundaryBytes); - out.write(__DASHDASH); - out.write(__CRLF); - inPart=false; - super.close(); + inPart=false; + } + finally + { + super.close(); + } } /* ------------------------------------------------------------ */