Hi

Short question: How can I prevent tomcat to receive the complete post data?


Long question:

I have a servlet that uses apache commons fileupload to process incoming
uploads using the streaming api.
Short version of the code:

InputStream inputStream;
try {
        ServletFileUpload upload = new ServletFileUpload();
        iterator = upload.getItemIterator( request );
        if ( ! iterator.hasNext() )
                return;
        FileItemStream item = iterator.next();
        if ( item.isFormField() || ! "file".equals( item.getFieldName() ) )
                return;
        inputStream = item.openStream();
        use( inputStream )
} finally {
        try {
                inputStream.close();
        } catch ( Throwable ignored ) {
                // just ignore
        }
}

Now, the method use(InputStream) may decide that this file is not wanted and
may NOT read the inputstream fully. Or there may be more field, that I am
not interested in. I want to abort reading the request, as there may be
several hundred megabytes of data coming.

However inputStream.close() in FileItemStream seams to read everything that
follows. So I tried not to close that steam. Still some component read
everything, I suspect tomcat did so - to allow keepalive connections. Then I
tried to throw an IOException, but no change.

So my question is: How can I prevent tomcat to receive the complete post
data?

Regards,
   Steffen


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to