[sync] Trouble keeping SyncML in sync with IMAP store
Gunnar Wrobel
p at rdus.de
Mon Sep 8 06:30:07 UTC 2008
Jan Schneider <jan <at> horde.org> writes:
>
> Zitat von Jan Christoph Ebersbach <ebersbach <at> univention.de>:
>
> > Good morning,
> >
> > I'm experiencing some trouble keeping a mobile device in sync with data that
> > is stored in an IMAP folder. I.e. creating an event with Kontact-Calendar and
> > trying to sync this event with my mobile device causes SyncML to think that
> > there is no new event in the IMAP folder.
> >
> > I tracked the problem down to a missing entry in the horde_histories table
> > which is not updated by the SyncML implementation at the moment. Btw, when I
> > open the calendar in kronolith the missing entry is added automatically.
> >
> > I wrote a small patch to work around this problem by syncing the IMAP folder
> > every time a SyncML-sync is performed. So far there is still a problem with
> > syncing the IMAP folder this way because the changes are not included in the
> > current but the next SyncML sync.
> >
> > Do you have any suggestions solving this problem in a better way?
>
> This is definitely not the correct way. The history entries have to be
> created directly in the drivers. In some cases this already happens
> either outside the drivers or in the driver parent class. Where this
> is not the case, it has to happen in the Kolab drivers, just like we
> do in the other drivers already.
I think Jan Christoph did refer to the problem we already discussed briefly on
the dev mailing list (http://thread.gmane.org/gmane.comp.horde.devel/16954).
You seem to refer to the SQL driver in your answer as this storage system only
allows for Horde as a client. If a storage backend allows modifications from
external clients this is a different story though. The Horde history system will
not catch external modifications at the moment.
I think the submitted patch is still a little bit too direct but in principle it
goes into the right direction. I believe that we need to fix the listBy() call
with a synchronization method so that the backend can check for external
modifications.
Cheers,
Gunnar
>
> Jan.
>
More information about the sync
mailing list