From cf21d29b28ff06240c7fb53284b537fbbce05f89 Mon Sep 17 00:00:00 2001 From: Amos Shi <ashi@openjdk.org> Date: Thu, 8 Aug 2024 06:46:08 +0000 Subject: [PATCH] 8304962: sun/net/www/http/KeepAliveCache/B5045306.java: java.lang.RuntimeException: Failed: Initial Keep Alive Connection is not being reused Backport-of: cddaf686e16424e9543be50a48b1c02337e79cf1 --- .../sun/net/www/http/KeepAliveCache/B5045306.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/jdk/sun/net/www/http/KeepAliveCache/B5045306.java b/test/jdk/sun/net/www/http/KeepAliveCache/B5045306.java index e53e9f6a443..151e2ab6b23 100644 --- a/test/jdk/sun/net/www/http/KeepAliveCache/B5045306.java +++ b/test/jdk/sun/net/www/http/KeepAliveCache/B5045306.java @@ -31,7 +31,7 @@ import java.io.IOException; import java.io.InputStream; -import java.io.PrintWriter; +import java.io.OutputStream; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; @@ -40,7 +40,6 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; @@ -176,9 +175,9 @@ class SimpleHttpTransactionHandler implements HttpHandler byte[] responseBody = new byte[RESPONSE_DATA_LENGTH]; for (int i=0; i<responseBody.length; i++) responseBody[i] = 0x41; - trans.sendResponseHeaders(200, 0); - try(PrintWriter pw = new PrintWriter(trans.getResponseBody(), false, Charset.forName("UTF-8"))) { - pw.print(responseBody); + trans.sendResponseHeaders(200, responseBody.length); + try (OutputStream os = trans.getResponseBody()) { + os.write(responseBody); } } else if (path.equals("/secondCall")) { int port2 = trans.getRemoteAddress().getPort(); @@ -201,10 +200,10 @@ class SimpleHttpTransactionHandler implements HttpHandler responseBody[i] = 0x41; // override the Content-length header to be greater than the actual response body trans.sendResponseHeaders(200, responseBody.length+1); - try(PrintWriter pw = new PrintWriter(trans.getResponseBody(), false, Charset.forName("UTF-8"))) { - pw.print(responseBody); - } + OutputStream os = trans.getResponseBody(); + os.write(responseBody); // now close the socket + // closing the stream here would throw; close the exchange instead trans.close(); } } catch (Exception e) { -- GitLab