Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug with external Alfresco WebDAV (RFC-compliant) server #16471

Closed
solracsf opened this issue Jul 19, 2019 · 26 comments
Closed

Bug with external Alfresco WebDAV (RFC-compliant) server #16471

solracsf opened this issue Jul 19, 2019 · 26 comments
Labels

Comments

@solracsf
Copy link
Member

solracsf commented Jul 19, 2019

This is a weird bug.

I've configured a test setup including both Alfresco - they claim a RFC-compliant DAV implementation: https://docs.alfresco.com/6.0/concepts/troubleshoot-webdav.html - and Nextcloud on the same server using docker (official NC docker image, using SQLite) on Ubuntu 18.04. Connection between both is well established (there is no encryption/TLS involved on the connection).

On the initial WebDAV setup (accessing Alfresco files trough WebDAV on Nextcloud) I've uploaded two files and checked if they were well uploaded on Alfresco. No problem.

But, if i upload any new file or create any new folder trough Nextcloud, i can only see that new file/folder, and not previously uploaded files or existent folders. Files or folders are well visible on Alfresco, previous and new ones. And it reproduces any time I upload any new file OR create any new folder trough Nextcloud interface on the DAV folder.

Only this new content is visible on Nextcloud interface (or mobile apps), not previous content on the DAV (Alfresco) server.

But if i try to re-upload an existent file, NC claims it already exists and if it should be rewrite, even if the file is not visible.

The only lines write on the log files are these:

[PHP] Error: Undefined variable: response at /var/www/html/lib/private/Files/Storage/DAV.php#283
[PHP] Error: Undefined offset: 1 at /var/www/html/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php#237
[PHP] Error: Undefined index: {DAV:}status at /var/www/html/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php#236

If any further info is needed, I'll be glad to provide it.

@solracsf solracsf added 0. Needs triage Pending check for reproducibility or if it fits our roadmap bug labels Jul 19, 2019
@solracsf solracsf changed the title Bug with external WebDAV accessing (R+W) Alfresco DAV files Bug with external Alfresco WebDAV (RFC-compliant) server Jul 19, 2019
@kesselb
Copy link
Contributor

kesselb commented Jul 22, 2019

Mind to add the raw response from alfresco? Check #15363 (Curl Logs)

@kesselb
Copy link
Contributor

kesselb commented Jul 22, 2019

There is a gap in the code 🤔

protected function propfind($path) {
$path = $this->cleanPath($path);
$cachedResponse = $this->statCache->get($path);
// we either don't know it, or we know it exists but need more details
if (is_null($cachedResponse) || $cachedResponse === true) {
$this->init();
try {
$response = $this->client->propFind(
$this->encodePath($path),
array(
'{DAV:}getlastmodified',
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
'{http://owncloud.org/ns}permissions',
'{http://open-collaboration-services.org/ns}share-permissions',
'{DAV:}resourcetype',
'{DAV:}getetag',
)
);
$this->statCache->set($path, $response);
} catch (ClientHttpException $e) {
if ($e->getHttpStatus() === 404) {
$this->statCache->clear($path . '/');
$this->statCache->set($path, false);
return false;
}
$this->convertException($e, $path);
} catch (\Exception $e) {
$this->convertException($e, $path);
}
} else {
$response = $cachedResponse;
}
return $response;
}

We have no cached response and call propfind. The response is faulty, a expection is thrown, catched and passed to convertException but there is no code to handle this kind of failure. Code reaches the last return statment without initializing $response.

\OC::$server->getLogger()->logException($e, ['app' => 'files_external', 'level' => ILogger::DEBUG]);

Could you change the logging level to debug? The exception is only logged with this level.

@solracsf
Copy link
Member Author

solracsf commented Jul 23, 2019

Hi @kesselb please find Debug log here attached.
nextcloud.log

@solracsf
Copy link
Member Author

solracsf commented Jul 23, 2019

I can also provide a test server if needed.

[files_external] Debug: Sabre\Xml\ParseException: We hit the end of the document prematurely.
This likely means that some parser "eats" too many elements.
Do not attempt to continue parsing. at <<closure>>

 0. /var/www/html/3rdparty/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php line 124
    Sabre\Xml\Reader->parseInnerTree({{DAV:}multistat ... "})
 1. <<closure>>
    Sabre\DAV\Xml\Response\MultiStatus::xmlDeserialize(Sabre\Xml\Reader ... ]})
 2. /var/www/html/3rdparty/sabre/xml/lib/Reader.php line 246
    undefinedundefinedcall_user_func(["Sabre\\DAV\\Xm ... "], Sabre\Xml\Reader ... ]})
 3. /var/www/html/3rdparty/sabre/xml/lib/Reader.php line 71
    Sabre\Xml\Reader->parseCurrentElement()
 4. /var/www/html/3rdparty/sabre/xml/lib/Service.php line 161
    Sabre\Xml\Reader->parse()
 5. /var/www/html/3rdparty/sabre/dav/lib/DAV/Client.php line 425
    Sabre\Xml\Service->expect(["{DAV:}multistatus"], "<?xml version=\ ... >")
 6. /var/www/html/3rdparty/sabre/dav/lib/DAV/Client.php line 237
    Sabre\DAV\Client->parseMultiStatus("<?xml version=\ ... >")
 7. /var/www/html/lib/private/Files/Storage/DAV.php line 260
    Sabre\DAV\Client->propFind("http://159.69.2 ... 4", ["{DAV:}getlastm ... "])
 8. /var/www/html/lib/private/Files/Storage/DAV.php line 317
    OC\Files\Storage\DAV->propfind("Nextcloud.mp4")
 9. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php line 225
    OC\Files\Storage\DAV->file_exists("Nextcloud.mp4")
10. /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php line 244
    OC\Files\Storage\Wrapper\Wrapper->file_exists("Nextcloud.mp4")
11. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php line 225
    OC\Files\Storage\Wrapper\Availability->file_exists("Nextcloud.mp4")
12. /var/www/html/lib/private/Files/View.php line 1160
    OC\Files\Storage\Wrapper\Wrapper->file_exists("Nextcloud.mp4")
13. /var/www/html/lib/private/Files/View.php line 542
    OC\Files\View->basicOperation("file_exists", "/Alfresco/Nextcloud.mp4")
14. /var/www/html/lib/private/Files/Filesystem.php line 696
    OC\Files\View->file_exists("Alfresco/Nextcloud.mp4")
15. /var/www/html/apps/files_versions/lib/Storage.php line 727
    OC\Files\Filesystem::file_exists("Alfresco/Nextcloud.mp4")
16. /var/www/html/apps/files_versions/lib/Command/Expire.php line 62
    OCA\Files_Versions\Storage::expire("Alfresco/Nextcloud.mp4", "test")
17. /var/www/html/lib/private/Command/CommandJob.php line 35
    OCA\Files_Versions\Command\Expire->handle()
18. /var/www/html/lib/private/BackgroundJob/Job.php line 61
    OC\Command\CommandJob->run("O:33:\"OCA\\Fil ... }")
19. /var/www/html/lib/private/BackgroundJob/QueuedJob.php line 44
    OC\BackgroundJob\Job->execute(OC\BackgroundJob\JobList {}, OC\Log {})
20. /var/www/html/cron.php line 146
    OC\BackgroundJob\QueuedJob->execute(OC\BackgroundJob\JobList {}, OC\Log {})

@solracsf
Copy link
Member Author

I've also tried the patch at #15363 (comment) and no help in this specific case.

@kesselb
Copy link
Contributor

kesselb commented Jul 23, 2019

Mind to add the raw response from alfresco? Check #15363 (Curl Logs)

Thanks 👍

@solracsf

This comment has been minimized.

@kesselb
Copy link
Contributor

kesselb commented Jul 23, 2019

OK. The above response is fine. I extracte the "parse response" code into a single script: https://github.com/kesselb/nextcloud-dav

I think we need a different response from alfresco. I assume the external share is called Alfresco and resolves to http://ip_here/alfresco/webdav/Webdav. Mind to propfind http://ip_here/alfresco/webdav/Webdav/Nextcloud.mp4 and share the response?

It might be easier to add some debug code to nextcloud but don't use this on production and remove it after you reproduced the problem / triggered the exception.

Index: sabre/dav/lib/DAV/Client.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- sabre/dav/lib/DAV/Client.php	(date 1559033541000)
+++ sabre/dav/lib/DAV/Client.php	(date 1563889227000)
@@ -421,6 +421,7 @@
      * @return array
      */
     function parseMultiStatus($body) {
+    	file_put_contents('dav_responses.log', $body . PHP_EOL, FILE_APPEND);
 
         $multistatus = $this->xml->expect('{DAV:}multistatus', $body);
 

@solracsf
Copy link
Member Author

Mind to propfind http://ip_here/alfresco/webdav/Webdav/Nextcloud.mp4 and share the response?

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/Nextcloud.mp4</D:href>
    <D:propstat>
      <D:prop>
        <D:supportedlock>
          <D:lockentry>
            <D:lockscope>
              <D:exclusive/></D:lockscope>
            <D:locktype>
              <D:write/></D:locktype>
          </D:lockentry>
        </D:supportedlock>
        <D:resourcetype></D:resourcetype>
        <D:displayname>Nextcloud.mp4</D:displayname>
        <D:source/>
        <D:creationdate>2019-07-19T13:08:40Z</D:creationdate>
        <D:getlastmodified>Fri, 19 Jul 2019 13:08:40 GMT</D:getlastmodified>
        <D:getcontentlanguage></D:getcontentlanguage>
        <D:getcontenttype>video/mp4</D:getcontenttype>
        <D:getetag>d1280e0f-7f56-48f6-b5d8-c57f90aa0421_1563541720635</D:getetag>
        <D:getcontentlength>462413</D:getcontentlength>
        <D:authticket>TICKET_7d434b253a0beae60460cec702e50203f8f91ef4</D:authticket>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

And the dav_responses.log file here attached.
dav_responses.log

@kesselb
Copy link
Contributor

kesselb commented Jul 23, 2019

Hmm. The responses are fine. I think we need a different patch here:

Index: sabre/dav/lib/DAV/Client.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- sabre/dav/lib/DAV/Client.php	(date 1559033541000)
+++ sabre/dav/lib/DAV/Client.php	(date 1563899826000)
@@ -421,8 +421,12 @@
      * @return array
      */
     function parseMultiStatus($body) {
-
-        $multistatus = $this->xml->expect('{DAV:}multistatus', $body);
+		try {
+			$multistatus = $this->xml->expect('{DAV:}multistatus', $body);
+		} catch (\Sabre\Xml\ParseException $e) {
+			file_put_contents('dav_responses.log', $body . PHP_EOL, FILE_APPEND);
+			throw $e;
+		}
 
         $result = [];

Please delete dav_responses.log and try again. The patch above should log the faulty response 🤷‍♂️

@solracsf
Copy link
Member Author

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <getetag/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-medium.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>da8f1e13-5fce-431d-8869-e99efc7826e5_1563893100232</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-medium.woff</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>a89f3444-f746-4db0-98c2-82c7f0040f08_1563871094351</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-medium.eot</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>d0e3af32-f4d0-4bf5-89e8-744be5175938_1563872077915</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-medium.woff2</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>937d9d54-609c-48a9-bd85-b163e8883e0c_1563870760556</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/Nextcloud.mp4</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>d1280e0f-7f56-48f6-b5d8-c57f90aa0421_1563541720635</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/Nextcloud%20Manual.pdf</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>cd002739-13f9-426f-8ee1-4defc736ed72_1563541722441</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/Nextcloud.png</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>eb9b3ba6-866c-492d-aa45-57323c9719ea_1563541719913</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/programme2019.pdf</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>4fbf541f-6523-4043-bdfe-4b2ec81ae1d1_1563541674769</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/T7517-OT.zip</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>6d83c16b-cb12-4c73-ad1d-57b44d08b7a7_1563537603962</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-complete-family-webfont-lite.zip</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>ccfaec63-feab-4335-91ec-7ea093a9ce88_1563537612031</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:" xmlns:ns0="http://owncloud.org/ns"  xmlns:ns1="http://open-collaboration-services.org/ns" >
  <D:response>
    <D:href>/alfresco/webdav/Webdav/oakes-grotesk-italic.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getlastmodified>Tue, 23 Jul 2019 16:43:39 GMT</D:getlastmodified>
        <D:getcontentlength>224462</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:resourcetype></D:resourcetype>
        <D:getetag>eefee386-1925-4109-8680-cafbca49623c_1563900219161</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <ns0:permissions/>
        <ns1:share-permissions/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/alfresco/webdav/Webdav/</D:href>
    <D:propstat>
      <D:prop></D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
      <D:prop>
        <quota-available-bytes/></D:prop>
      <D:status>HTTP/1.1 404 Not Found</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

@kesselb
Copy link
Contributor

kesselb commented Jul 23, 2019

Thanks 👍

<D:prop></D:prop> is the faulty part.

image

Correct response (with 1+ elements in props)

image

Faulty response (with no elements in props)

cc @icewind1991 @evert

@solracsf
Copy link
Member Author

solracsf commented Jul 23, 2019

Just one more hint; if a file is MOVED into the "Alfresco" folder (WebDAV root) and then I go into that folder, it is empty (but if i just upload or COPY a new file into it, i can see that file).

@solracsf
Copy link
Member Author

solracsf commented Sep 9, 2019

For now, we've mounted our Alfresco trough davfs2 on Ubuntu and then using External Storage > Local on NC pointing to /mnt/alfresco.

@khalidaloufi

This comment has been minimized.

@kesselb

This comment has been minimized.

@noci2012
Copy link

noci2012 commented Nov 22, 2019

in V17.0 this still fails:

[PHP] Error: Undefined index: {DAV:}status at /data/WWW/xxx.site.net/htdocs/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php#236

GET /index.php/apps/files/ajax/getstoragestats.php?dir=%2FExt-Share
from ::1 by userx at 2019-11-22T22:08:54+01:00

[PHP] Error: Undefined offset: 1 at /data/WWW/xxx.site.net/htdocs/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php#237

GET /index.php/apps/files/ajax/getstoragestats.php?dir=%2FExt-Share
from ::1 by userx at 2019-11-22T22:08:54+01:00

@solracsf
Copy link
Member Author

solracsf commented Jan 9, 2020

There is a note in their website that states:

Moving a file or folder using WebDAV on an Ubuntu client causes loss of metadata and creates a new node reference

There is a known issue where Ubuntu creates a new nodeRef when you move a file or a folder in WebDAV, because it uses PUT and DELETE methods instead of a MOVE method. As a result, the nodeRef for the file or folder changes and any associated metadata is lost. This issue applies to all versions of Ubuntu, but does not occur when using a Windows client.

Can this be related (and fixed)?

@solracsf
Copy link
Member Author

solracsf commented Oct 19, 2020

With newer Nextcloud versions, a new exception is thrown, maybe it helps solving this:

{
  "reqId":"JQc9EMUkBi2sCWuT6289",
  "level":3,
  "time":"2020-10-19T13:36:26+02:00",
  "app":"PHP",
  "method":"PROPFIND",
  "url":"/remote.php/dav/files/user/WebDAV",
  "message":{
    "Exception":"Error",
    "Message":"Undefined index: {DAV:}status at /3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php#227",
    "Code":0,
    "Trace":[
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":227,
        "function":"onError",
        "class":"OC\\Log\\ErrorHandler",
        "type":"::"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php",
        "line":122,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Response\\MultiStatus",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":71,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Service.php",
        "line":179,
        "function":"parse",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Client.php",
        "line":425,
        "function":"expect",
        "class":"Sabre\\Xml\\Service",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Client.php",
        "line":238,
        "function":"parseMultiStatus",
        "class":"Sabre\\DAV\\Client",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/DAV.php",
        "line":223,
        "function":"propFind",
        "class":"Sabre\\DAV\\Client",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/Common.php",
        "line":878,
        "function":"opendir",
        "class":"OC\\Files\\Storage\\DAV",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/Wrapper/PermissionsMask.php",
        "line":158,
        "function":"getDirectoryContent",
        "class":"OC\\Files\\Storage\\Common",
        "type":"->"
      },
      {
        "function":"getDirectoryContent",
        "class":"OC\\Files\\Storage\\Wrapper\\PermissionsMask",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":408,
        "function":"iterator_to_array"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":388,
        "function":"handleChildren",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":340,
        "function":"scanChildren",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Watcher.php",
        "line":106,
        "function":"scan",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/View.php",
        "line":1343,
        "function":"update",
        "class":"OC\\Files\\Cache\\Watcher",
        "type":"->",
        "args":[
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file":"/lib/private/Files/View.php",
        "line":1383,
        "function":"getCacheEntry",
        "class":"OC\\Files\\View",
        "type":"->"
      },
      {
        "file":"/apps/dav/lib/Connector/Sabre/Directory.php",
        "line":221,
        "function":"getFileInfo",
        "class":"OC\\Files\\View",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Tree.php",
        "line":80,
        "function":"getChild",
        "class":"OCA\\DAV\\Connector\\Sabre\\Directory",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":976,
        "function":"getNodeForPath",
        "class":"Sabre\\DAV\\Tree",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":1678,
        "function":"getPropertiesIteratorForPath",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":1661,
        "function":"writeMultiStatus",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
        "line":363,
        "function":"generateMultiStatus",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
        "line":89,
        "function":"httpPropFind",
        "class":"Sabre\\DAV\\CorePlugin",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":474,
        "function":"emit",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":251,
        "function":"invokeMethod",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":319,
        "function":"start",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/apps/dav/lib/Server.php",
        "line":320,
        "function":"exec",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/apps/dav/appinfo/v2/remote.php",
        "line":35,
        "function":"exec",
        "class":"OCA\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/remote.php",
        "line":167,
        "args":[
          "/apps/dav/appinfo/v2/remote.php"
        ],
        "function":"require_once"
      }
    ],
    "File":"/lib/private/Log/ErrorHandler.php",
    "Line":91,
    "CustomMessage":"--"
  },
  "userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36",
  "version":"19.0.4.2",
  "id":"5f8d8095ef647"
}

Followed by:

{
  "reqId":"JQc9EMUkBi2sCWuT6289",
  "level":4,
  "time":"2020-10-19T13:36:26+02:00",
  "app":"webdav",
  "method":"PROPFIND",
  "url":"/remote.php/dav/files/user/WebDAV",
  "message":{
    "Exception":"TypeError",
    "Message":"explode() expects parameter 2 to be string, null given",
    "Code":0,
    "Trace":[
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":228,
        "function":"explode"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
        "line":214,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Element\\Response",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":164,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php",
        "line":122,
        "function":"parseInnerTree",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "function":"xmlDeserialize",
        "class":"Sabre\\DAV\\Xml\\Response\\MultiStatus",
        "type":"::"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":229,
        "function":"call_user_func"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Reader.php",
        "line":71,
        "function":"parseCurrentElement",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/xml/lib/Service.php",
        "line":179,
        "function":"parse",
        "class":"Sabre\\Xml\\Reader",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Client.php",
        "line":425,
        "function":"expect",
        "class":"Sabre\\Xml\\Service",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Client.php",
        "line":238,
        "function":"parseMultiStatus",
        "class":"Sabre\\DAV\\Client",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/DAV.php",
        "line":223,
        "function":"propFind",
        "class":"Sabre\\DAV\\Client",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/Common.php",
        "line":878,
        "function":"opendir",
        "class":"OC\\Files\\Storage\\DAV",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Storage/Wrapper/PermissionsMask.php",
        "line":158,
        "function":"getDirectoryContent",
        "class":"OC\\Files\\Storage\\Common",
        "type":"->"
      },
      {
        "function":"getDirectoryContent",
        "class":"OC\\Files\\Storage\\Wrapper\\PermissionsMask",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":408,
        "function":"iterator_to_array"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":388,
        "function":"handleChildren",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Scanner.php",
        "line":340,
        "function":"scanChildren",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/Cache/Watcher.php",
        "line":106,
        "function":"scan",
        "class":"OC\\Files\\Cache\\Scanner",
        "type":"->"
      },
      {
        "file":"/lib/private/Files/View.php",
        "line":1343,
        "function":"update",
        "class":"OC\\Files\\Cache\\Watcher",
        "type":"->",
        "args":[
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file":"/lib/private/Files/View.php",
        "line":1383,
        "function":"getCacheEntry",
        "class":"OC\\Files\\View",
        "type":"->"
      },
      {
        "file":"/apps/dav/lib/Connector/Sabre/Directory.php",
        "line":221,
        "function":"getFileInfo",
        "class":"OC\\Files\\View",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Tree.php",
        "line":80,
        "function":"getChild",
        "class":"OCA\\DAV\\Connector\\Sabre\\Directory",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":976,
        "function":"getNodeForPath",
        "class":"Sabre\\DAV\\Tree",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":1678,
        "function":"getPropertiesIteratorForPath",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":1661,
        "function":"writeMultiStatus",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
        "line":363,
        "function":"generateMultiStatus",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
        "line":89,
        "function":"httpPropFind",
        "class":"Sabre\\DAV\\CorePlugin",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":474,
        "function":"emit",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":251,
        "function":"invokeMethod",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line":319,
        "function":"start",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/apps/dav/lib/Server.php",
        "line":320,
        "function":"exec",
        "class":"Sabre\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/apps/dav/appinfo/v2/remote.php",
        "line":35,
        "function":"exec",
        "class":"OCA\\DAV\\Server",
        "type":"->"
      },
      {
        "file":"/remote.php",
        "line":167,
        "args":[
          "/apps/dav/appinfo/v2/remote.php"
        ],
        "function":"require_once"
      }
    ],
    "File":"/3rdparty/sabre/dav/lib/DAV/Xml/Element/Response.php",
    "Line":228,
    "CustomMessage":"--"
  },
  "userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36",
  "version":"19.0.4.2",
  "id":"5f8d8095ef0b9"
}

@szaimen
Copy link
Contributor

szaimen commented Jun 17, 2021

Is this Issue still valid in NC21.0.2? If not, please close this issue. Thanks! :)

@solracsf
Copy link
Member Author

Yes, this still valid with 21.0.2 and the error message is exactly the same.

@szaimen szaimen added 1. to develop Accepted and waiting to be taken care of and removed 0. Needs triage Pending check for reproducibility or if it fits our roadmap needs info labels Jun 17, 2021
@kesselb
Copy link
Contributor

kesselb commented Oct 10, 2021

Fix for sabre/dav to parse prop properly: sabre-io/dav#1355

@kesselb
Copy link
Contributor

kesselb commented Dec 20, 2021

PR to update sabre/dav: nextcloud/3rdparty#954

@kesselb
Copy link
Contributor

kesselb commented Jun 27, 2022

nextcloud/3rdparty#936 was merged a while ago. Should work now for Nextcloud 24 ;)

@kesselb kesselb closed this as completed Jun 27, 2022
@szaimen szaimen reopened this Oct 3, 2022
@kesselb
Copy link
Contributor

kesselb commented Oct 10, 2022

@szaimen It does not work for Nextcloud 24? 😞

@szaimen
Copy link
Contributor

szaimen commented Oct 10, 2022

Reopened this wrongly. Sorry!

@szaimen szaimen closed this as completed Oct 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants