Very grateful for your reply, this does indeed solve my issue (and I 
learned something new too).


On 10/09/2019 12:03, Mark Thomas wrote:
> On 09/09/2019 16:41, Leon Atherton wrote:
>> Our use case is rejecting the request based on IP.
>> In the browser the status code is 0, and the network tab in developer
>> tools is showing no response to the request. It's the same in Chrome and
>> Firefox.
>> The request works fine when I send from Node.JS.
>> It seems to me that Tomcat responds to the request before the upload has
>> completed, and calling request.getParameter() fixes the problem because
>> it causes Tomcat to read the full request before the response is sent.
>> Some clients are fine with the early response (e.g. Node.JS), but both
>> Chrome and Firefox don't like it.
>> I'm not sure if it's an issue with how Tomcat handles the request, or
>> how the browsers are handling the response (but I suspect it can be
>> fixed on the Tomcat side as the problem does not occur with Payara).
> The configuration attribute you want is maxSwallowSize. You need to set
> that to greater than the size of the uploaded file.
> Clients could handle this better but many don't read the response until
> the request is fully written.
> Tomcat limit's maxSwallowSize as a DoS protection measure. Without it, a
> client could just continue uploading a slow trickle of data and tie up a
> server thread.
> For the record, maPostSize applies *only* to requests using
> application/x-www-form-urlencoded
> The test provided by the OP uses multipart/form-data. The applicable
> limits are defined by javax.servlet.annotation.MultipartConfig and the
> defaults are unlimited.
> Any call to getPart(), getParameter() and friends will trigger the
> reading of the request body.
> Hence, without the call to getParameter() Tomcat doesn't read the
> request body. With small uploads there is enough network buffering
> between the client and the server for the client to be able to write the
> full request so it reads the response. (Tomcat's maxSwallowSize
> effectively acts as a buffer.) With larger uploads the client fills the
> buffers before the request is fully written so it never sees the response.
> Increasing the maxSwallowSize will allow the client to write the full
> request and then read the response.
> Mark
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to