You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Julian Reschke (Commented) (JIRA)" <ji...@apache.org> on 2012/02/21 12:29:34 UTC
[jira] [Commented] (JCR-3240) Wrong Content-Type when uploading via
MAC OS Webdav client
[ https://issues.apache.org/jira/browse/JCR-3240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13212518#comment-13212518 ]
Julian Reschke commented on JCR-3240:
-------------------------------------
a) Jackrabbit not looking at the input stream for PROPFIND is strange; we should find out what's going on here.
b) Jetty re-using the stream is weird; I'd be surprised if the servlet spec allows that behavior...
> Wrong Content-Type when uploading via MAC OS Webdav client
> ----------------------------------------------------------
>
> Key: JCR-3240
> URL: https://issues.apache.org/jira/browse/JCR-3240
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-jcr-server
> Affects Versions: 2.2.5
> Environment: Jetty 6.1.22, Mac OS X Webdav Client: "WebDAVFS/1.8.3 (01838000) Darwin/10.8.0 (x86_64)"
> Reporter: ZFabrik
>
> The problem seems to be caused by the way Jetty and Jackrabbit interoperates with each other conditioned by a peculiarity of the MAC OS Webdav client:
> 0) Jetty resuses the request input-stream instance: org.mortbay.jetty.HttpParser$Input for new requests.
> 1) A PROPFIND arrives with Content-Length=123 for example. It seems however that Jackrabbit is not interested into the xml content at all.
> 2) A PUT arrives with Content-Length=0 (seem to be a peculiarity of the MAC OS Webdav client, I have no clue why MAC OS is doing this. The real payload will be send a "few" requests later within another PUT).
> 3) Jetty reuses the InputStream which contains the xml content from the previous PROPFIND request!
> 4) Jackrabbit uses Apache Tika in order to sleuth the content type and finds the xml from the previous request (ignoring the fact the the Content-Length is 0)
> The workaround I found proves my findings. I extended Jackrabbit's org.apache.jackrabbit.j2ee.SimpleWebdavServlet
> containing an overwritten service() method:
> @Override
> protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> super.service(request, response);
>
> // make sure input stream is eaten up
> ServletInputStream ins = request.getInputStream();
> while (ins.read() != -1);
> }
> Now the input-stream is always eaten up so that the following request will get a clean input-stream.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira