[ 
https://issues.apache.org/jira/browse/JCR-3228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13209923#comment-13209923
 ] 

Timothee Maret commented on JCR-3228:
-------------------------------------

Actually the port is striped by the commons-httpclient library, as shown by 
this snippet [0].
As the host port is required by the current Webdav implementation (eg. [1]), a 
solution could be to
explicitely set the host header through the virtual host parameter, if and only 
if the port matches the protocol default port.

[0] org.apache.commons.httpclient.HttpMethodBase#addHostRequestHeader
protected void addHostRequestHeader(HttpState state, HttpConnection conn)
    throws IOException, HttpException {
        
        ...
        
        String host = this.params.getVirtualHost();
        if (host != null) {
            LOG.debug("Using virtual host name: " + host);
        } else {
            host = conn.getHost();
        }
        int port = conn.getPort();
        
        ...

        //appends the port only if not using the default port for the protocol
        if (conn.getProtocol().getDefaultPort() != port) {
            host += (":" + port);
        }

        setRequestHeader("Host", host);
    }
[1] org.apache.jackrabbit.spi2dav.IdURICache#add(String uri, ItemId itemId)
                
> WebDav/DavEx remoting throws workspace missmatch exceptions when running on 
> port 80. 
> -------------------------------------------------------------------------------------
>
>                 Key: JCR-3228
>                 URL: https://issues.apache.org/jira/browse/JCR-3228
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-spi2dav, jackrabbit-webdav
>    Affects Versions: 2.2.9
>            Reporter: Timothee Maret
>
> When running on port 80, the webdav remoting shows unexpected behavior such 
> as listing incomplete folder content.
> Moreover the following exception is thrown:
> The exception I get: java.lang.IllegalArgumentException: Workspace missmatch.
> [org.apache.jackrabbit.spi2dav.IdURICache.add(IdURICache.java:60),
> org.apache.jackrabbit.spi2dav.URIResolverImpl.getItemUri(URIResolverImpl.java:129),
> org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.getItemUri(RepositoryServiceImpl.java:391),
> org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPath(RepositoryServiceImpl.java:149),
> org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPath(RepositoryServiceImpl.java:138),
> org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getItemInfos(RepositoryServiceImpl.java:265),
> org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createNodeState(WorkspaceItemStateFactory.java:93),
> org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createNodeState(TransientISFactory.java:97),
> org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.doResolve(NodeEntryImpl.java:990),
> org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.resolve(HierarchyEntryImpl.java:133),
> org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.getItemState(HierarchyEntryImpl.java:252),
> org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.getItemState(NodeEntryImpl.java:71),
> org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getItem(ItemManagerImpl.java:199),
> org.apache.jackrabbit.jcr2spi.LazyItemIterator.prefetchNext(LazyItemIterator.java:138),
> org.apache.jackrabbit.jcr2spi.LazyItemIterator.next(LazyItemIterator.java:251),
> org.apache.jackrabbit.jcr2spi.LazyItemIterator.nextNode(LazyItemIterator.java:154),
> com.adobe.drive.connector.adep.GetChildrenHandler.execute(GetChildrenHandler.java:121),
> com.adobe.drive.connector.adep.GetChildrenHandler.execute(GetChildrenHandler.java:43),
> com.adobe.drive.model.internal.synchronization.AssetSynchronizer.execute(AssetSynchronizer.java:432),
> com.adobe.drive.model.internal.synchronization.AssetSynchronizer.synchronizeStructure(AssetSynchronizer.java:352),
> com.adobe.drive.internal.data.manager.DataManager.getChildren(DataManager.java:2602),
> com.adobe.drive.internal.biz.versioncue.service.call.GetChildren$1.call(GetChildren.java:98),
> com.adobe.drive.internal.biz.versioncue.service.call.GetChildren$1.call(GetChildren.java:73),
> com.adobe.drive.model.context.Context.run(Context.java:88),
> com.adobe.drive.internal.biz.versioncue.service.call.GetChildren.executeItem(GetChildren.java:126),
> com.adobe.drive.internal.biz.versioncue.service.call.GetChildren.executeItem(GetChildren.java:50),
> com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall$1.run(VersionCueCall.java:125),
> com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall$1.run(VersionCueCall.java:119),
> com.adobe.drive.data.internal.persistence.PersistenceRunner.run(PersistenceRunner.java:119),
> com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall.execute(VersionCueCall.java:134),
> com.adobe.drive.internal.biz.versioncue.service.VersionCueService.getChildren(VersionCueService.java:269),
> com.adobe.drive.ncomm.versioncue.GetChildren.handle(GetChildren.java:59),
> com.adobe.drive.ncomm.versioncue.VersionCueRequestHandler$1.run(VersionCueRequestHandler.java:185),
> com.adobe.drive.core.internal.jobs.JobHandler$JobWrapper.run(JobHandler.java:270),
> com.adobe.drive.core.internal.jobs.JobHandler$JobWrapper.run(JobHandler.java:286),
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886),
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908),
> java.lang.Thread.run(Thread.java:680)]
> I have tracked this issue and actually the HTTP "Host" header which is used 
> to identify the webdav server does not contain the port (only the host) when 
> running on port 80, whereas it contains the <host>:<port> when running on any 
> other port.

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

        

Reply via email to