Sodrul Bhuiyan created JCR-5009:
-----------------------------------

             Summary: webdav4s is not working with multiple TLS Record Layer 
segments
                 Key: JCR-5009
                 URL: https://issues.apache.org/jira/browse/JCR-5009
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: 2.21.21
            Reporter: Sodrul Bhuiyan


We're trying to use webdav over SSL using webdav4s provider. We're running into 
connection closed error because the connection had been released from the 
finally block as part of 
org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject#executeRequest 
method. The issue becomes visible from 
org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject#getProperties(org.apache.commons.vfs2.provider.GenericURLFileName,
 int, org.apache.jackrabbit.webdav.property.DavPropertyNameSet, boolean) method 
which we're using. I would imagine it'd also be an issue from 
org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject#doListChildrenResolved
 method. As both of these methods try to get the body of the response after the 
connection had been released from executeRequest method.

The design assumption was that the entire data (http response) was consumed 
before closing. However while debugging the issue we have found that TLS 
transmission containing the application data had been broken up into multiple 
TLS Record Layer Segments (Fragments as designed). While filling up the buffer 
from SSL Socket it stopped after the 1st TLS record layer, which only contained 
the http headers as it hit the end of that stream (fragment). Non-ssl 
transaction doesn't have fragmentation so buffer fills up entire response at 
once thus doesn't cause the connection closed error.

I'd imagine the fix would be to implement an overloading executeRequest method 
for keeping the connection open and close it after retrieving the body of the 
response from getProperties and doListChildrenResolved method.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to