You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sergey Beryozkin (JIRA)" <ji...@apache.org> on 2014/07/04 19:00:35 UTC

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

     [ https://issues.apache.org/jira/browse/CXF-5837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sergey Beryozkin updated CXF-5837:
----------------------------------

    Priority: Major  (was: Critical)

> 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
>
> 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)