[Tickets #12605] Re: AS: Fix loss of PINGABLE flag
noreply at bugs.horde.org
noreply at bugs.horde.org
Fri Aug 23 16:12:02 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 | Michael Rubinsky <mrubinsk at horde.org>
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
------------------------------------------------------------------------------
Michael Rubinsky <mrubinsk at horde.org> (2013-08-23 16:12) wrote:
> 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.
My concern is, that since this is an undefined condition, if we don't
send *something* back to the client about the unsync'd collection then
it will not issue a full sync on it. I guess only testing will answer
this, but I really hate working around broken client behavior with
server responses that are essentially undefined for the context.
> 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.
...and that's perfectly fine. What the client should do in this case
is issue a SYNC request (which can even occur while any previous PING
is still running) for the newly pushable folders. This will invalidate
the cache that the PING command uses, so the PING will eventually
terminate with the "Detected changes by another process" log notice,
and when the client issues the next PING, it should be a full request
that includes the newly pingable folders.
>
> Looking through the code how updatePingable() works, I think
> it sets the 'pingable' flag for any folder in the collection with a
> 'synckey' field?!
Only with your patch :)
The existing behavior is to only flag the collections that were
included in the current PING requests FOLDERS element ($_collections),
not all known collections ($collections in the foreach loop).
> 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