You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sylvain Mougenot (JIRA)" <ji...@apache.org> on 2014/07/01 12:21:24 UTC

[jira] [Created] (CXF-5837) Upload size limit status 500 for files twice bigger than the limit

Sylvain Mougenot created CXF-5837:
-------------------------------------

             Summary: Upload size limit status 500 for files twice bigger than the limit
                 Key: CXF-5837
                 URL: https://issues.apache.org/jira/browse/CXF-5837
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
    Affects Versions: 2.7.11
         Environment: Java 7, Tomcat 7
            Reporter: Sylvain Mougenot
            Priority: Critical


I'm using cxf to manage uploads within jax-rs application.
I used system properties to adjust behaviour on upload in order to limit size to 10MB (10 * 1024 * 1024 = .10 485 760)
{code}
java ....
-Dorg.apache.cxf.io.CachedOutputStream.Threshold=102400
-Dorg.apache.cxf.io.CachedOutputStream.OutputDirectory=/temp/upload
-Dorg.apache.cxf.io.CachedOutputStream.MaxSize=10485760
...
{code}

This works fine if the user send *files a little too big* (11MB for exemple) : \\ client gets the http *status 413*.

But if the sent file is more than *twice bigger* than the limit (21MB for exemple) it fails :\\
client gets the http *status 500*.

The reason why seems to be in *org.apache.cxf.transport.http.AbstractHTTPDestination#cacheInput*.
In my opinion, before writing the response out, this method is responsible for reading the remains of the request.
But it does it the same way as when it tried to read attachement file : with size limitations. Because the remaining datas are again bigger than the limit (the file is more than twice too big) have an error.

Maybe,
* It would be nice to detect the status 413 (already set for the response).
So that we could just consume the data (without caching it at all).
* It would also be nice no to limit this consuming to a multiple of the value "MaxSize" setting, not a hard coded 16MB. See code line 549 : IOUtils.consume(in, 16 * 1024 * 1024) ;)

Sory,
I would have liked to submit a pullrequest (or patch) but I've no idea how to find the status code inside the argument (Message outMessage).



--
This message was sent by Atlassian JIRA
(v6.2#6252)