diff -urN ../z-push-2.6.2+0.orig/src/backend/carddav/carddav.php ./src/backend/carddav/carddav.php --- ../z-push-2.6.2+0.orig/src/backend/carddav/carddav.php 2021-02-04 03:38:38.000000000 +0200 +++ ./src/backend/carddav/carddav.php 2022-01-29 20:11:11.109686000 +0200 @@ -1323,7 +1323,18 @@ $raw = $this->server->get(false, false, true); if ($raw !== false) { $xml = new SimpleXMLElement($raw); - foreach ($xml->addressbook_element as $response) { + if ($xml->addressbook_element) { + $elements = $xml->addressbook_element; + } elseif ($xml->element) { + $elements = $xml->element; + } else { + $elements = array(); + } + unset($xml); + foreach ($elements as $response) { + if (empty($response->url) and !empty($response->id)) { + $response->url = $this->url . $response->id . '/'; + } if ($this->gal_url !== false) { if (strcmp(urldecode($response->url), $this->gal_url) == 0) { ZLog::Write(LOGLEVEL_DEBUG, sprintf("BackendCardDAV::discoverAddressbooks() Ignoring GAL addressbook '%s'", $this->gal_url)); @@ -1333,7 +1344,7 @@ ZLog::Write(LOGLEVEL_DEBUG, sprintf("BackendCardDAV::discoverAddressbooks() Found addressbook '%s'", urldecode($response->url))); $this->addressbooks[] = urldecode($response->url); } - unset($xml); + unset($elements); } }