DAV backend error when providing VCALENDAR objects inviting seemingly random users registered on the ownCloud instance

We have one client for who we provide a hosted ownCloud instance.

They are unable to invite a handful of email addresses via the DAV backend, using the ownCloud Calendar from the marketplace as a front end, all of who are registered on ownCloud as users, via their Apple Calendar.

Steps to reproduce

  1. Install ownCloud Calendar from the marketplace and create a test calendar and event
  2. Add this to Apple Calendar (this may also affect other clients…)
  3. Invite a problematic user to your calendar event (it seemingly only affects a specific random subset of users that are registered on the ownCloud instance)

In both cases the client is PUT’ing a VCALENDAR object to the server.

Expected behaviour

The request to the DAV backend should succeed and the end result is the user is an attendee of the event and an email is issued to them (I’m not sure where ownCloud calendar is responsible and where the DAV backend is responsible but the issue appears to be with the backend…)

This request is in the Apache log when I save the event with most email addresses:
[19/Mar/2021:08:38:02 +0100] “PUT /owncloud/remote.php/dav/calendars/redacted/redacted/redacted.ics HTTP/1.1” 201 - “-” “Mac+OS+X CalendarAgent”
[19/Mar/2021:08:38:02 +0100] “GET /owncloud/remote.php/dav/calendars/redacted/redacted/redacted.ics HTTP/1.1” 200 1082 “-” “Mac+OS+X CalendarAgent”

I turned enhanced Apache I/O logging on and this is what is spat out by ownCloud when it succeeds:
HTTP/1.1 200 OK and a valid VCALENDAR response.

Actual behaviour

But if I add a small number of email addresses associated with users registered on this ownCloud instance:
[19/Mar/2021:08:39:59 +0100] “PUT /owncloud/remote.php/dav/calendars/redacted/redacted/redacted.ics HTTP/1.1” 401 448 “-” “Mac+OS+X CalendarAgent”
[19/Mar/2021:08:39:59 +0100] “PUT /owncloud/remote.php/dav/calendars/redacted/redacted/redacted.ics HTTP/1.1” 404 239 “-” “Mac+OS+X CalendarAgent”

And when it fails:
HTTP/1.1 404 Not Found and an xml response:

\n\n Sabre\DAV\Exception\NotFound\n Principal with name RedactedFirstname%20RedactedLastname not found\n\n
Where the above RedactedFirstname and RedactedLastname are the first name and last name of the user for example Joe%20Bloggs, seperated by %20 which is of course an encoded space. For this particular user, I reproduced it on my own Apple Calendar too where this user is NOT stored in Apple Contacts, or anywhere else on the Mac and it is NOT provided by the submitted VCALENDAR to the server so the only place it could pick this first name and last name up from is ownCloud, indicating it is linking it somehow to the ownCloud account, but then failing with a SabreDAV error.

The result is the calendar object is NOT saved on the server and NO invite is sent out to this user, and Apple Calendar keeps spitting out an error over and over.

Server configuration

Operating system: CentOS 8

Web server: Apache 2.4

Database: MySQL 8

PHP version: PHP 7.4

ownCloud version: 10.6

Updated from an older ownCloud or fresh install: Updated over time as new ownCloud versions are released, don’t recall where we began…

Where did you install ownCloud from: CentOS 8 repository baseurl=http://download.owncloud.org/download/repositories/production/CentOS_8

Signing status (ownCloud 9.0 and above):

“No errors have been found”

The content of config/config.php:

{
“system”: {
“updatechecker”: false,
“instanceid”: REMOVED SENSITIVE VALUE
“passwordsalt”: “REMOVED SENSITIVE VALUE”,
“secret”: “REMOVED SENSITIVE VALUE”,
“trusted_domains”: [
REMOVED SENSITIVE VALUE
],
“datadirectory”: “/var/owncloud/data”,
“overwrite.cli.url”: “REMOVED SENSITIVE VALUE”,
“dbtype”: “mysql”,
“version”: “10.6.0.5”,
“dbname”: “owncloud”,
“dbhost”: “localhost”,
“dbtableprefix”: “oc_”,
“mysql.utf8mb4”: true,
“dbuser”: “REMOVED SENSITIVE VALUE”,
“dbpassword”: “REMOVED SENSITIVE VALUE”,
“logtimezone”: “UTC”,
“apps_paths”: [
{
“path”: “/var/www/html/owncloud/apps”,
“url”: “/apps”,
“writable”: false
},
{
“path”: “/var/www/html/owncloud/apps-external”,
“url”: “/apps-external”,
“writable”: true
}
],
“installed”: true,
“mail_domain”: “REMOVED SENSITIVE VALUE”,
“mail_from_address”: “REMOVED SENSITIVE VALUE”, “mail_smtpmode”: “php”,
“memcache.locking”: “\OC\Memcache\Redis”,
“memcache.local”: “\OC\Memcache\Redis”,
“redis”: {
“host”: “localhost”,
“port”: 6379
},
“loglevel”: 3,
“maintenance”: false,
“theme”: “”
},
“apps”: {
“activity”: {
“enabled”: “yes”,
“installed_version”: “2.6.0”,
“signed”: “true”,
“types”: “filesystem”
},
“backgroundjob”: {
“lastjob”: “17”
},
“calendar”: {
“enabled”: “yes”,
“installed_version”: “1.6.4”,
“signed”: “true”,
“types”: “”
},
“comments”: {
“enabled”: “yes”,
“installed_version”: “0.3.0”,
“types”: “logging,dav”
},
“configreport”: {
“enabled”: “yes”,
“installed_version”: “0.2.0”,
“types”: “filesystem”
},
“core”: {
“backgroundjobs_mode”: “cron”,
“first_install_version”: “10.5.0.10”,
“installedat”: “1600183479.3805”,
“lastcron”: “1616219103”,
“lastupdateResult”: “[]”,
“lastupdatedat”: “1616155207”,
“oc.integritycheck.checker”: “[]”,
“public_files”: “files_sharing/public.php”,
“public_webdav”: “dav/appinfo/v1/publicwebdav.php”,
“shareapi_default_expire_date”: “no”,
“shareapi_enforce_expire_date”: “no”,
“updater.secret.created”: “1612533839”,
“vendor”: “owncloud”
},
“dav”: {
“enabled”: “yes”,
“installed_version”: “0.6.0”,
“types”: “filesystem”
},
“federatedfilesharing”: {
“enabled”: “yes”,
“installed_version”: “0.5.0”,
“types”: “filesystem”
},
“federation”: {
“enabled”: “yes”,
“installed_version”: “0.1.0”,
“types”: “authentication”
},
“files”: {
“cronjob_scan_files”: “500”,
“enabled”: “yes”,
“installed_version”: “1.5.2”,
“types”: “filesystem”
},
“files_external”: {
“enabled”: “yes”,
“installed_version”: “0.7.1”,
“types”: “filesystem”
},
“files_mediaviewer”: {
“enabled”: “yes”,
“installed_version”: “1.0.4”,
“signed”: “true”,
“types”: “”
},
“files_pdfviewer”: {
“enabled”: “yes”,
“installed_version”: “0.11.2”,
“signed”: “true”,
“types”: “”
},
“files_sharing”: {
“enabled”: “yes”,
“installed_version”: “0.14.0”,
“types”: “filesystem”
},
“files_texteditor”: {
“enabled”: “yes”,
“installed_version”: “2.3.0”,
“types”: “”
},
“files_trashbin”: {
“enabled”: “yes”,
“installed_version”: “0.9.1”,
“types”: “filesystem”
},
“files_versions”: {
“enabled”: “yes”,
“installed_version”: “1.3.0”,
“types”: “filesystem”
},
“firstrunwizard”: {
“enabled”: “yes”,
“installed_version”: “1.2.0”,
“types”: “”
},
“impersonate”: {
“enabled”: “yes”,
“impersonate_all_groupadmins”: “false”,
“impersonate_include_groups”: “true”,
“impersonate_include_groups_list”: “[“admin”]”, “installed_version”: “0.5.0”,
“signed”: “true”,
“types”: “”
},
“market”: {
“activity”: “2.6.0”,
“enabled”: “yes”,
“files_mediaviewer”: “1.0.4”,
“files_pdfviewer”: “0.11.2”,
“installed_version”: “0.6.0”,
“twofactor_totp”: “0.7.1”,
“types”: “”
},
“notifications”: {
“enabled”: “yes”,
“installed_version”: “0.5.2”,
“types”: “logging”
},
“provisioning_api”: {
“enabled”: “yes”,
“installed_version”: “0.5.0”,
“types”: “prevent_group_restriction”
},
“systemtags”: {
“enabled”: “yes”,
“installed_version”: “0.3.0”,
“types”: “logging”
},
“templateeditor”: {
“enabled”: “yes”,
“installed_version”: “0.4.0”,
“types”: “”
},
“twofactor_totp”: {
“enabled”: “yes”,
“installed_version”: “0.7.1”,
“signed”: “true”,
“types”: “”
},
“updatenotification”: {
“core”: “10.6.0”,
“enabled”: “yes”,
“installed_version”: “0.2.1”,
“notify_groups”: “[]”,
“types”: “”
}
}
}

List of activated apps:

Enabled:

  • activity: 2.6.0
  • calendar: 1.6.4
  • comments: 0.3.0
  • configreport: 0.2.0
  • dav: 0.6.0
  • federatedfilesharing: 0.5.0
  • federation: 0.1.0
  • files: 1.5.2
  • files_external: 0.7.1
  • files_mediaviewer: 1.0.4
  • files_pdfviewer: 0.11.2
  • files_sharing: 0.14.0
  • files_texteditor: 2.3.0
  • files_trashbin: 0.9.1
  • files_versions: 1.3.0
  • firstrunwizard: 1.2.0
  • impersonate: 0.5.0
  • market: 0.6.0
  • notifications: 0.5.2
  • provisioning_api: 0.5.0
  • systemtags: 0.3.0
  • templateeditor: 0.4.0
  • twofactor_totp: 0.7.1
  • updatenotification: 0.2.1

Are you using external storage, if yes which one: No

Are you using encryption: Disk is LUKS encrypted so encrypted at rest and Apache is configured with HTTPS TLS 1.2+ so encrypted in transit?

Are you using an external user-backend, if yes which one: No

Client configuration

Browser: Apple Calendar

Operating system: MacOS High Sierra

Logs

Web server error log

See above in actual/expected behaviour

ownCloud log (data/owncloud.log)

{“reqId”:“redacted”,“level”:0,“time”:“2021-03-31T13:58:23+00:00”,“remoteAddr”:“redacted”,“user”:“redacted”,“app”:“webdav”,“method”:“PUT”,“url”:"/owncloud/remote.php/dav/calendars/redacted/personal/redacted.ics",“message”:“Exception: HTTP/1.1 404 Principal with name Joe%20Bloggs not found: {“Exception”:“Sabre\\DAV\\Exception\\NotFound”,“Message”:“Principal with name Joe%20Bloggs not found”,“Code”:0,“Trace”:”#0 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/Tree.php(78): Sabre\\DAVACL\\AbstractPrincipalCollection->getChild()\n#1 \/var\/www\/html\/owncloud\/apps\/dav\/lib\/Tree.php(51): Sabre\\DAV\\Tree->getNodeForPath()\n#2 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/Tree.php(73): OCA\\DAV\\Tree->getNodeForPath()\n#3 \/var\/www\/html\/owncloud\/apps\/dav\/lib\/Tree.php(51): Sabre\\DAV\\Tree->getNodeForPath()\n#4 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAVACL\/Plugin.php(601): OCA\\DAV\\Tree->getNodeForPath()\n#5 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAVACL\/Plugin.php(199): Sabre\\DAVACL\\Plugin->getCurrentUserPrivilegeSet()\n#6 \/var\/www\/html\/owncloud\/apps\/dav\/lib\/Connector\/Sabre\/DavAclPlugin.php(51): Sabre\\DAVACL\\Plugin->checkPrivileges()\n#7 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Schedule\/Plugin.php(472): OCA\\DAV\\Connector\\Sabre\\DavAclPlugin->checkPrivileges()\n#8 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/event\/lib\/WildcardEmitterTrait.php(89): Sabre\\CalDAV\\Schedule\\Plugin->scheduleLocalDelivery()\n#9 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Schedule\/Plugin.php(350): Sabre\\DAV\\Server->emit()\n#10 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Schedule\/Plugin.php(626): Sabre\\CalDAV\\Schedule\\Plugin->deliver()\n#11 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Schedule\/Plugin.php(337): Sabre\\CalDAV\\Schedule\\Plugin->processICalendarChange()\n#12 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/event\/lib\/WildcardEmitterTrait.php(89): Sabre\\CalDAV\\Schedule\\Plugin->calendarObjectChange()\n#13 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Plugin.php(897): Sabre\\DAV\\Server->emit()\n#14 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/CalDAV\/Plugin.php(739): Sabre\\CalDAV\\Plugin->validateICalendar()\n#15 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/event\/lib\/WildcardEmitterTrait.php(89): Sabre\\CalDAV\\Plugin->beforeWriteContent()\n#16 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/Server.php(1133): Sabre\\DAV\\Server->emit()\n#17 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/CorePlugin.php(492): Sabre\\DAV\\Server->updateFile()\n#18 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/event\/lib\/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPut()\n#19 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/Server.php(472): Sabre\\DAV\\Server->emit()\n#20 \/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAV\/Server.php(253): Sabre\\DAV\\Server->invokeMethod()\n#21 \/var\/www\/html\/owncloud\/apps\/dav\/lib\/Server.php(330): Sabre\\DAV\\Server->start()\n#22 \/var\/www\/html\/owncloud\/apps\/dav\/appinfo\/v2\/remote.php(31): OCA\\DAV\\Server->exec()\n#23 \/var\/www\/html\/owncloud\/remote.php(165): require_once(’\/var\/www\/html\/o…’)\n#24 {main}",“File”:"\/var\/www\/html\/owncloud\/lib\/composer\/sabre\/dav\/lib\/DAVACL\/AbstractPrincipalCollection.php",“Line”:116}"}

Browser log

Apple Calendar only spits out a very basic error alert window along the lines of “Server Error”

In my efforts to wittle it down, I’ve got it down to a single curl command to reproduce this every time for this one particular user:

curl -X ‘PUT’ -u ‘user:password’ --data-raw $‘BEGIN:VCALENDAR\r\nVERSION:2.0\r\nBEGIN:VEVENT\r\nSUMMARY:Test 8\r\nORGANIZER;EMAIL=organiser_email:mailto:organiser_email\r\nATTENDEE;EMAIL=organiser_email:mailto:organiser_email\r\nATTENDEE;EMAIL=invitee_email:mailto:invitee_email\r\nDTSTART;VALUE=DATE:20210420\r\nDTEND;VALUE=DATE:20210421\r\nLAST-MODIFIED:20210405T150219Z\r\nEND:VEVENT\r\nEND:VCALENDAR’ ‘redacted/owncloud/remote.php/dav/calendars/username_here/personal/redacted.ics’

Every time this request (with the correct data instead of redacted data) returns:

<?xml version="1.0" encoding="utf-8"?>

<d:error xmlns:d=“DAV:” xmlns:s=“sabredav/ns”>
<s:exception>Sabre\DAV\Exception\NotFound</s:exception>
<s:message>Principal with name Joe%20Bloggs not found</s:message>
</d:error>

As you can see the curl request does not provide the first name and last name so it must connect it to the ownCloud user somehow, but fail further along.

This is reproduceable with Apple Calendar, via the web and also via curl.

Out of curiosity: Is Joe Bloggs the calendar owner or one of the attendees?

1 Like

BTW, I see several potential problems:

  • Missing content specifier, add -H "Content-Type: text/calendar; charset=utf-8"
  • Some required properties are missing. Validating your calendar data returns 3 errors.

Hope this helps.

1 Like

Hi alfredb

Thank you for your response. I appreciate you taking the time to help.

This person is not the owner, it is another user in the ownCloud system that is being invited to a calendar event. The calendar owner in this case is my own ownCloud account but it is affecting other users inviting this user too.

I copied the request from Chrome’s dev tools which did have a bunch of headers and a much bigger VCALENDAR request but as part of my debugging have purposely stripped down the request to the bare minimum of a request required to produce the error. The error is the same with or without the content specifier, and the error is the same with the full VCALENDAR request.

It must be getting successfully parsed by ownCloud otherwise it would not be finding the correct name?

It seems to be:

  • The request is being accepted by ownCloud as a valid calendar request, with no mention of the user’s name.
  • ownCloud is using the email address of the invitee provided, and finding them as a valid ownCloud user.
  • Some problem occurs after this, and the 404 is issued along with the user’s name which it found.

The error is message being issued by this file:
/var/www/html/owncloud/lib/composer/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php

By this function:

public function getChild($name)
{
    $principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix.'/'.$name);
    if (!$principalInfo) {
        throw new DAV\Exception\NotFound('Principal with name '.$name.' not found');
    }

    return $this->getChildForPrincipal($principalInfo);
}

And this backtrace:

#0 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/Tree.php(78): Sabre\DAVACL\AbstractPrincipalCollection->getChild()\n
#1 /var/www/html/owncloud/apps/dav/lib/Tree.php(51): Sabre\DAV\Tree->getNodeForPath()\n
#2 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/Tree.php(73): OCA\DAV\Tree->getNodeForPath()\n
#3 /var/www/html/owncloud/apps/dav/lib/Tree.php(51): Sabre\DAV\Tree->getNodeForPath()\n
#4 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAVACL/Plugin.php(601): OCA\DAV\Tree->getNodeForPath()\n
#5 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAVACL/Plugin.php(199): Sabre\DAVACL\Plugin->getCurrentUserPrivilegeSet()\n
#6 /var/www/html/owncloud/apps/dav/lib/Connector/Sabre/DavAclPlugin.php(51): Sabre\DAVACL\Plugin->checkPrivileges()\n
#7 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Schedule/Plugin.php(472): OCA\DAV\Connector\Sabre\DavAclPlugin->checkPrivileges()\n
#8 /var/www/html/owncloud/lib/composer/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\CalDAV\Schedule\Plugin->scheduleLocalDelivery()\n
#9 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Schedule/Plugin.php(350): Sabre\DAV\Server->emit()\n
#10 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Schedule/Plugin.php(626): Sabre\CalDAV\Schedule\Plugin->deliver()\n
#11 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Schedule/Plugin.php(337): Sabre\CalDAV\Schedule\Plugin->processICalendarChange()\n
#12 /var/www/html/owncloud/lib/composer/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\CalDAV\Schedule\Plugin->calendarObjectChange()\n
#13 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Plugin.php(897): Sabre\DAV\Server->emit()\n
#14 /var/www/html/owncloud/lib/composer/sabre/dav/lib/CalDAV/Plugin.php(739): Sabre\CalDAV\Plugin->validateICalendar()\n
#15 /var/www/html/owncloud/lib/composer/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\CalDAV\Plugin->beforeWriteContent()\n
#16 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/Server.php(1133): Sabre\DAV\Server->emit()\n
#17 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/CorePlugin.php(492): Sabre\DAV\Server->updateFile()\n
#18 /var/www/html/owncloud/lib/composer/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\DAV\CorePlugin->httpPut()\n
#19 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/Server.php(472): Sabre\DAV\Server->emit()\n
#20 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAV/Server.php(253): Sabre\DAV\Server->invokeMethod()\n
#21 /var/www/html/owncloud/apps/dav/lib/Server.php(330): Sabre\DAV\Server->start()\n
#22 /var/www/html/owncloud/apps/dav/appinfo/v2/remote.php(31): OCA\DAV\Server->exec()\n
#23 /var/www/html/owncloud/remote.php(165): require_once(’/var/www/html/o…’)\n
#24 /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php(116)

I have spent many hours hunting through each of these PHP files trying to ultimately find what it is looking for, and failing to find but just end up going round in circles.

Unfortunately I don’t have any solution. My best guess is, that principal ‘Joe%20Bloggs’, containing a quoted blank, cannot be found by this routines. The name in the DB (field principaluri in table oc_calendars) is with an unqouted blank (‘Joe Bloggs’), what apparently is not the same.

If you dare, you could try to patch it in the DB,

'principals/users/Joe Bloggs' -> 'principals/users/Joe%20Bloggs'

just to see wether it works or not. You can always change it back if not.

Has user Joe Bloggs any other trouble using his calendar?

1 Like

Hi Alfred

Thank you again for your assistance.

The user has not had trouble using his calendar from what I know, I added some test events by impersonation and this worked OK.

It does appear to work if I manually patch the principaluri field… the invite went through, the invitee received an email both for being invited, and then for the event being cancelled when I uninvited.

However, this user then loses access to his own calendar ( at least from what I see by impersonation ).

Other users have spaces both in their user name, and /or their display name and they do not all appear to be affected.

I’m glad that some progress has been made - do you think then that this is ultimately a bug in ownCloud?

I wonder what temporary measures we can put in place to get around it… perhaps adding duplicate entries to oc_calendars with %20, or by a manual patch to replace %20 with a space somewhere in the code, and what it will take to ultimately get this fixed. I will do some experimenting to see if I can get anything to work for now.

According your description, I assume it’s a bug and it should be reported, if not yet done.

I’d try to patch it in the code: Before throwing that exception, try whether it works with the unquoted name. This leaves the DB untouched.

I wrapped urldecode() around $name in the getChild function previously mentioned, in /var/www/html/owncloud/lib/composer/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php

Changed:

public function getChild($name)
{
$principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix.’/’.$name);
if (!$principalInfo) {
throw new DAV\Exception\NotFound(‘Principal with name ‘.$name.’ not found’);
}

   return $this->getChildForPrincipal($principalInfo);

}

To:

public function getChild($name)
{
$principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix.’/’.urldecode($name));
if (!$principalInfo) {
throw new DAV\Exception\NotFound(‘Principal with name ‘.$name.’ not found’);
}

   return $this->getChildForPrincipal($principalInfo);

}

And this appears to be working - I have deferred back to our end client for testing, I’ll post to confirm if they confirm their issue is now resolved.

Thank you very much for your help Alfred - hopefully this is the end of it until ownCloud release a fix, I have posted a GitHub issue, if the client confirms I’ll post a further update to it with more information.

1 Like