8304962: sun/net/www/http/KeepAliveCache/B5045306.java: java.lang.RuntimeException: Failed: Initial Keep Alive Connection is not being reused

Reviewed-by: jpai
This commit is contained in:
Daniel Jeliński 2023-03-28 08:57:02 +00:00
parent a06f46196a
commit cddaf686e1

@ -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;
@ -175,9 +174,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();
@ -200,10 +199,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) {