[Tickets #12605] Re: AS: Fix loss of PINGABLE flag

noreply at bugs.horde.org noreply at bugs.horde.org
Fri Aug 23 15:58:59 UTC 2013


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/12605
------------------------------------------------------------------------------
  Ticket             | 12605
  Updated By         | Thomas Jarosch <thomas.jarosch at intra2net.com>
  Summary            | AS: Fix loss of PINGABLE flag
  Queue              | Synchronization
  Version            | Git master
  Type               | Bug
  State              | Feedback
  Priority           | 2. Medium
  Milestone          |
  Patch              | 1
  Owners             | Michael Rubinsky
------------------------------------------------------------------------------


Thomas Jarosch <thomas.jarosch at intra2net.com> (2013-08-23 15:58) wrote:

>> when the PIM requests a PING for a folder it didn't sync yet (=fresh
>> account),
>> the synckey will be empty and we won't set the collection as pingable.
>
> It shouldn't do this. A SYNC is a MUST before a PING.
>
>> If I'm not mistaken, we need an enum (=state machine) here:
>> 0 => not pingable
>> 1 => PIM wants ping but we don't have a synckey
>> 2 => pingable
>>
>> what do you think?
>
> We couldn't PING the folder anyway, even if it was marked as  
> PINGABLE until we have a valid SYNC performed on the collection, so  
> I'm not sure what value keeping track of the client's error in  
> sending the PING for collection would be.  I'll have to reread the  
> specs again to be sure I'm not missing something here, but I'm 99%  
> positive that this is broken client behavior.

We don't have to ping the folder if we don't have a synckey yet
(as you mentioned we can't send changes anyway), we just skip it until  
we have a synckey.

We could modify the "<Ping>" handling to mark all wanted folders
as pingable unconditionally and remove the "pingable" flag
from any folder that is not in the list.

If the PIM sends "<Ping>" without a folder list, we check
which pingable folders have a sync key and skip those without one.
I don't think the new strategy costs any extra performance than the  
current one.


The broken client in question is iOS 4, I'll have to retest how iOS 6 behaves.
Though it's not that uncommon to configure an account, may be open the
INBOX to see if it's initially working and then go back to the settings menu
and select a bunch of folders than should be pushed through.


Looking through the code how updatePingable() works, I think
it sets the 'pingable' flag for any folder in the collection with a  
'synckey' field?!
Isn't that NOT the desired behavior?

That would explain why I see getServerChanges() calls
for any folder I've accessed on the PIM, even though
I just set the push mode for three of them...






More information about the bugs mailing list