Index: java/org/apache/coyote/http11/AbstractInputBuffer.java =================================================================== --- java/org/apache/coyote/http11/AbstractInputBuffer.java (revision 1079469) +++ java/org/apache/coyote/http11/AbstractInputBuffer.java (working copy) @@ -53,6 +53,11 @@ /** + * Associated processor. + */ + protected AbstractHttp11Processor processor; + + /** * Associated Coyote request. */ protected Request request; Index: java/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- java/org/apache/coyote/http11/Http11AprProcessor.java (revision 1079469) +++ java/org/apache/coyote/http11/Http11AprProcessor.java (working copy) @@ -73,7 +73,8 @@ this.endpoint = endpoint; request = new Request(); - inputBuffer = new InternalAprInputBuffer(request, headerBufferSize); + inputBuffer = new InternalAprInputBuffer(this, + request, headerBufferSize); request.setInputBuffer(inputBuffer); response = new Response(); Index: java/org/apache/coyote/http11/Http11NioProcessor.java =================================================================== --- java/org/apache/coyote/http11/Http11NioProcessor.java (revision 1079469) +++ java/org/apache/coyote/http11/Http11NioProcessor.java (working copy) @@ -77,7 +77,8 @@ this.endpoint = endpoint; request = new Request(); - inputBuffer = new InternalNioInputBuffer(request, maxHttpHeaderSize); + inputBuffer = new InternalNioInputBuffer(this, request, + maxHttpHeaderSize); request.setInputBuffer(inputBuffer); response = new Response(); Index: java/org/apache/coyote/http11/Http11Processor.java =================================================================== --- java/org/apache/coyote/http11/Http11Processor.java (revision 1079469) +++ java/org/apache/coyote/http11/Http11Processor.java (working copy) @@ -67,7 +67,7 @@ this.endpoint = endpoint; request = new Request(); - inputBuffer = new InternalInputBuffer(request, headerBufferSize); + inputBuffer = new InternalInputBuffer(this, request, headerBufferSize); request.setInputBuffer(inputBuffer); response = new Response(); Index: java/org/apache/coyote/http11/InternalAprInputBuffer.java =================================================================== --- java/org/apache/coyote/http11/InternalAprInputBuffer.java (revision 1079469) +++ java/org/apache/coyote/http11/InternalAprInputBuffer.java (working copy) @@ -48,8 +48,10 @@ /** * Alternate constructor. */ - public InternalAprInputBuffer(Request request, int headerBufferSize) { + public InternalAprInputBuffer(Http11AprProcessor processor, + Request request, int headerBufferSize) { + this.processor = processor; this.request = request; headers = request.getMimeHeaders(); @@ -596,6 +598,10 @@ } + if (!processor.getEndpoint().isRunning()) { + throw new IOException(sm.getString("iib.endpointNotRunning")); + } + return (nRead > 0); } Index: java/org/apache/coyote/http11/InternalInputBuffer.java =================================================================== --- java/org/apache/coyote/http11/InternalInputBuffer.java (revision 1079469) +++ java/org/apache/coyote/http11/InternalInputBuffer.java (working copy) @@ -37,8 +37,10 @@ /** * Default constructor. */ - public InternalInputBuffer(Request request, int headerBufferSize) { + public InternalInputBuffer(Http11Processor processor, Request request, + int headerBufferSize) { + this.processor = processor; this.request = request; headers = request.getMimeHeaders(); @@ -465,6 +467,9 @@ } + if (!processor.getEndpoint().isRunning()) { + throw new IOException(sm.getString("iib.endpointNotRunning")); + } return (nRead > 0); } Index: java/org/apache/coyote/http11/InternalNioInputBuffer.java =================================================================== --- java/org/apache/coyote/http11/InternalNioInputBuffer.java (revision 1079469) +++ java/org/apache/coyote/http11/InternalNioInputBuffer.java (working copy) @@ -55,8 +55,10 @@ /** * Alternate constructor. */ - public InternalNioInputBuffer(Request request, int headerBufferSize) { + public InternalNioInputBuffer(Http11NioProcessor processor, Request request, + int headerBufferSize) { + this.processor = processor; this.request = request; headers = request.getMimeHeaders(); @@ -729,6 +731,11 @@ // Do a simple read with a short timeout read = readSocket(timeout, block)>0; } + + if (!processor.getEndpoint().isRunning()) { + throw new IOException(sm.getString("iib.endpointNotRunning")); + } + return read; } Index: java/org/apache/coyote/http11/LocalStrings.properties =================================================================== --- java/org/apache/coyote/http11/LocalStrings.properties (revision 1079469) +++ java/org/apache/coyote/http11/LocalStrings.properties (working copy) @@ -38,3 +38,4 @@ iib.eof.error=Unexpected EOF read on the socket iib.requestheadertoolarge.error=Request header is too large iib.invalidmethod=Invalid character (CR or LF) found in method name +iib.endpointNotRunning=The endpoint was stopped whilst waiting for data from the client \ No newline at end of file