{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/calendar/issues/935","labels_url":"https://api.github.com/repos/owncloud/calendar/issues/935/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/calendar/issues/935/comments","events_url":"https://api.github.com/repos/owncloud/calendar/issues/935/events","html_url":"https://github.com/owncloud/calendar/issues/935","id":106948727,"number":935,"title":"Error 500 when doing calendar-multiget for nonexistent hrefs","user":{"login":"untitaker","id":837573,"avatar_url":"https://avatars.githubusercontent.com/u/837573?v=3","gravatar_id":"","url":"https://api.github.com/users/untitaker","html_url":"https://github.com/untitaker","followers_url":"https://api.github.com/users/untitaker/followers","following_url":"https://api.github.com/users/untitaker/following{/other_user}","gists_url":"https://api.github.com/users/untitaker/gists{/gist_id}","starred_url":"https://api.github.com/users/untitaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/untitaker/subscriptions","organizations_url":"https://api.github.com/users/untitaker/orgs","repos_url":"https://api.github.com/users/untitaker/repos","events_url":"https://api.github.com/users/untitaker/events{/privacy}","received_events_url":"https://api.github.com/users/untitaker/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/owncloud/calendar/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/owncloud/calendar/labels/CalDAV","name":"CalDAV","color":"006b75"},{"url":"https://api.github.com/repos/owncloud/calendar/labels/needs%20info","name":"needs info","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":19,"created_at":"2015-09-17T09:50:34Z","updated_at":"2015-09-20T19:08:01Z","closed_at":null,"body":"### Steps to reproduce\r\n\r\n1.  Set up a local ownCloud instance on port 8080 with a calendar whose slug is `test`, on a user called `asdf` with the password is `asdf`. None of this is relevant, it's just how I reproduce it. You can use this: https://github.com/vdirsyncer/owncloud-testserver\r\n\r\n2.  Execute the following using [httpie](https://github.com/jakubroztocil/httpie). The lines after the command are stdin. Paste them too and hit `^D`.\r\n\r\n        $ cat | http --auth asdf:asdf report http://127.0.0.1:8080/remote.php/caldav/calendars/asdf/test/\r\n        <?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n                <C:calendar-multiget xmlns:D=\"DAV:\"\r\n                    xmlns:C=\"urn:ietf:params:xml:ns:caldav\">\r\n                    <D:prop>\r\n                        <D:getetag/>\r\n                        <C:calendar-data/>\r\n                    </D:prop>\r\n                    <D:href>/remote.php/caldav/calendars/asdf/test/0.8003376417345851.ics</D:href>\r\n                </C:calendar-multiget>\r\n\r\n### Expected behavior\r\n\r\nI expect the server to return a multistatus object with a 404 error for this particular href.\r\n\r\n### Actual behavior\r\n\r\n    HTTP/1.1 500 Internal Server Error\r\n    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n    Connection: close\r\n    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:;\r\n    media-src *; connect-src *\r\n    Content-Type: application/xml; charset=utf-8\r\n    Expires: Thu, 19 Nov 1981 08:52:00 GMT\r\n    Host: 127.0.0.1:8080\r\n    Pragma: no-cache\r\n    Set-Cookie: oc6vzxemf45u=99731cfec4ad2e18dda8e7dccfffc0e1; path=/; HttpOnly\r\n    X-Content-Type-Options: nosniff\r\n    X-Frame-Options: Sameorigin\r\n    X-Powered-By: PHP/5.6.13\r\n    X-Robots-Tag: none\r\n    X-Sabre-Version: 2.1.6\r\n    X-XSS-Protection: 1; mode=block\r\n\r\n    <?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n    <ns0:error xmlns:ns0=\"DAV:\" xmlns:ns1=\"http://sabredav.org/ns\">\r\n        <ns1:sabredav-version>2.1.6</ns1:sabredav-version>\r\n        <ns1:exception>InvalidArgumentException</ns1:exception>\r\n        <ns1:message>The objectData argument must contain an 'uri' property</ns1:message>\r\n    </ns0:error>\r\n\r\n### Server configuration\r\n**Operating system**: ArchLinux\r\n\r\n**Web server:** PHP's built-in server\r\n\r\n**Database:** sqlite\r\n\r\n**PHP version:** 5.6.13\r\n\r\n**ownCloud version:** ownCloud 8.1.3, but it might have happened since 8.1.1\r\n\r\n**Updated from an older ownCloud or fresh install:** I wiped the DB very recently because the upgrade to 8.1.1 completely lost my data.\r\n\r\n**List of activated apps:** Defaults, plus contacts and calendar.\r\n"},"comment":{"url":"https://api.github.com/repos/owncloud/calendar/issues/comments/141821633","html_url":"https://github.com/owncloud/calendar/issues/935#issuecomment-141821633","issue_url":"https://api.github.com/repos/owncloud/calendar/issues/935","id":141821633,"user":{"login":"gvde","id":12151414,"avatar_url":"https://avatars.githubusercontent.com/u/12151414?v=3","gravatar_id":"","url":"https://api.github.com/users/gvde","html_url":"https://github.com/gvde","followers_url":"https://api.github.com/users/gvde/followers","following_url":"https://api.github.com/users/gvde/following{/other_user}","gists_url":"https://api.github.com/users/gvde/gists{/gist_id}","starred_url":"https://api.github.com/users/gvde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gvde/subscriptions","organizations_url":"https://api.github.com/users/gvde/orgs","repos_url":"https://api.github.com/users/gvde/repos","events_url":"https://api.github.com/users/gvde/events{/privacy}","received_events_url":"https://api.github.com/users/gvde/received_events","type":"User","site_admin":false},"created_at":"2015-09-20T19:08:01Z","updated_at":"2015-09-20T19:08:01Z","body":"But it doesn't matter whether it returns false or null: either way the CalendarObject assumes an array as third parameter but gets that false or null value passed instead. Of course, that's easily checked and would comply to the current description \"If any children are not found, you do not have to return them.\".\r\n\r\nBut that isn't all. Doing so will not create a multi-get response for the objects requested which, however, is required even if it's a not found response. Thus, I think the sabre function handling the multi-get request using the getMultipleChildren() function to find the objects would have to add those missing responses which it doesn't seem to do at the moment..."}}