[Kolab-devel] DAVException in iRony-0.2.7

Daniel Morlock daniel.morlock at gmail.com
Sun Sep 14 01:42:56 CEST 2014


Another note on this issue: I traced the problem back to 
rcube_imap_generic::setAnnotation(). It seems that the UID is stored as 
IMAP annotation, but rcube has no permission to do so:

[14-Sep-2014 01:01:14,000000 +0200]: [CD0C] C: A0028 SETANNOTATION 
Calendar "/vendor/kolab/uniqueid" ("value.shared" 
"6b1ede31b0a7-55a3d47d64af-20daf595")
[14-Sep-2014 01:01:14,000000 +0200]: [CD0C] S: A0028 NO Permission 
denied
[14-Sep-2014 01:01:14,000000 +0200]: [CD0C] C: A0029 SETANNOTATION 
Calendar "/vendor/kolab/uniqueid" ("value.priv" 
"6b1ede31b0a7-55a3d47d64af-20daf595")
[14-Sep-2014 01:01:14,000000 +0200]: [CD0C] S: A0029 NO Permission 
denied

We are using Cyrus IMAP 2.4.17 since Cyrus IMAP 2.5 is not yet available 
as Gentoo package. But ANNOTATIONS should be available in Cyrus 2.4, 
too.
Any suggestions how to debug this further?

Thanks,
Daniel.


On 2014-09-13 20:55, Daniel Morlock wrote:
> Hi,
> 
> I backtraced the problem a bit: For the calendar listing, the method
> CalendarBackend::_read_calendars() is invoked. In this method, each
> folder gets its uid i.e. using $id = DAVBackend::get_uid($folder) as
> follows:
> 
>     /**
>      * Helper method to extract folder UID metadata
>      *
>      * @param object \kolab_storage_folder Folder to get UID for
>      * @return string Folder's UID
>      */
>     public static function get_uid($folder)
>     {
>         // UID is defined in folder METADATA
>         $metakeys = array(self::IMAP_UID_KEY,
> self::IMAP_UID_KEY_PRIVATE, self::IMAP_UID_KEY_CYRUS);
>         $metadata = $folder->get_metadata($metakeys);
>         foreach ($metakeys as $key) {
>             if (($uid = $metadata[$key])) {
>                 return $uid;
>             }
>         }
> 
>         // generate a folder UID and set it to IMAP
>         $uid = rtrim(chunk_split(md5($folder->name .
> $folder->get_owner() . uniqid('-', true)), 12, '-'), '-');
>         self::set_uid($folder, $uid);
> 
>         return $uid;
>     }
> 
> For unkown reason, the $uid cannot be retrieved from the metadata and
> the method generates a new $uid and tries to set it to IMAP using
> self::set_uid():
> 
>     /**
>      * Helper method to set an UID value to the given IMAP folder 
> instance
>      *
>      * @param object \kolab_storage_folder Folder to set UID
>      * @param string Folder's UID
>      * @return boolean True on succes, False on failure
>      */
>     public static function set_uid($folder, $uid)
>     {
>         if (!($success =
> $folder->set_metadata(array(self::IMAP_UID_KEY => $uid)))) {
>             $success =
> $folder->set_metadata(array(self::IMAP_UID_KEY_PRIVATE => $uid));
>         }
>         return $success;
>     }
> 
> This method tries to set the given $uid as metadata for the given
> $folder object (which is from type "kolab_storage_folder"). But return
> value of $folder->set_metadata() is false, so the metadata was not set
> properly. This results in a temp-uid that is used when listing the
> calendars but is never stored. So when I click on this uid it doesn't
> exist anymore and result in the error stated in my first mail.
> 
> 
> Any ideas?
> 
> Best,
> Daniel.
> 
> 
> 
> On 2014-09-13 20:27, Daniel Morlock wrote:
>> Hi,
>> 
>> I just updated from Kolab 3.1 to Kolab 3.2 and iRony from 0.2.3 to
>> 0.2.7 and it seems that iRony can't find contacts and calendar events
>> anymore. I enabled the DAV-Browser to check the CalDAV entries. I can
>> access my account and see my calendars and address books e.g. at
>> https://mydomain.de/irony/addressbooks/mymail@mydomain.de. But when I
>> select an addressbook (or a calendar) to see the contacts or the
>> events, I get the error:
>> 
>> <d:error><s:exception>Sabre\DAV\Exception\NotFound</s:exception><s:message>Addressbook
>> with name '9a0b4616f17a-e3f6dd280b8a-f9094fd8' could not be
>> found</s:message><s:sabredav-version>1.8.6</s:sabredav-version></d:error>
>> 
>> The addressbook and the calendars does exist since I can see and
>> modify them with Roundcubemail and with "kolab list-messages
>> user/myuser/Calendar at mydomain.de", I see a lot of messages in it. I
>> also tried iRony 0.2.8 and get the same errors.
>> 
>> Any help is highly appreciated.
>> 
>> Thanks,
>> Daniel.


More information about the devel mailing list