From f9ad6da8b5d36c4699dbfba347d16e9ca81fb2b7 Mon Sep 17 00:00:00 2001 From: Daniel Fuchs Date: Wed, 26 Apr 2017 11:10:54 +0100 Subject: [PATCH] 8179273: sun.net.httpserver.LeftOverInputStream should stop attempting to drain the stream when the server is stopped Reviewed-by: chegar --- .../classes/sun/net/httpserver/LeftOverInputStream.java | 7 +++++-- .../share/classes/sun/net/httpserver/ServerImpl.java | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/LeftOverInputStream.java b/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/LeftOverInputStream.java index c715d72ad18..d3a6e1b08c3 100644 --- a/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/LeftOverInputStream.java +++ b/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/LeftOverInputStream.java @@ -41,8 +41,8 @@ import com.sun.net.httpserver.spi.*; * isEOF() returns true, when all expected bytes have been read */ abstract class LeftOverInputStream extends FilterInputStream { - ExchangeImpl t; - ServerImpl server; + final ExchangeImpl t; + final ServerImpl server; protected boolean closed = false; protected boolean eof = false; byte[] one = new byte [1]; @@ -109,6 +109,9 @@ abstract class LeftOverInputStream extends FilterInputStream { int bufSize = 2048; byte[] db = new byte [bufSize]; while (l > 0) { + if (server.isFinishing()) { + break; + } long len = readImpl (db, 0, bufSize); if (len == -1) { eof = true; diff --git a/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java b/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java index e384a849241..10c3539b84b 100644 --- a/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java +++ b/jdk/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java @@ -179,6 +179,10 @@ class ServerImpl implements TimeSource { return httpsConfig; } + public final boolean isFinishing() { + return finished; + } + public void stop (int delay) { if (delay < 0) { throw new IllegalArgumentException ("negative delay parameter");