[horde] ActiveSync problem
Michael J Rubinsky
mrubinsk at horde.org
Thu Jul 21 14:12:39 UTC 2011
Quoting Simon Wilson <simon at simonandkate.net>:
>> Mike - thanks, on first check setting a forced heartbeat seems to
>> have resolved it. I made an edit and it went through very quickly.
>> Will follow up and look in more detail at the parameters that can
>> be set later.
>>
>> I had looked at heartbeat but discounted it as the description
>> inferred to me that it was server to client, which seemed to be
>> working fine.
>>
>> Simon
>
> Hmmm... having a forced heartbeat seems to possibly be sucking dry
> the battery on my iPhone. By this stage of the day I'm usually still
> at 50% battery left, I'm down to 17% at the moment. Even a reboot to
> make sure nothing else is chewing memory hasn't slowed it down.
> Mike, can you elaborate on what the heartbeat tries to do? I have it
> set to $conf[activesync][ping][forcedheartbeat] 25 and
> $conf[activesync][ping][waitinterval] 15 at the moment. What does
> that force the phone to do?
Essentially with these values you are forcing the phone to make more
frequent (but shorter) requests.
The server receives a PING, notes the current time (lets call this
{request_time}), adds {heartbeatinterval} seconds to it and then polls
history for changes. The server then waits for {waitinterval}, then
checks to see if {hearbeatinterval} + {request_time} has passed yet.
If not, it polls history again. Rinse. Repeat. When
{heartbeatinterval} + {request_time} has passed, the PING response is
sent to the device and the request ends. It is then up to the device
to decide when to send another PING. This is not something that Horde
can control. On iOS, this is usually done almost immediatley (you can
control this by turning off Push, and setting a specific interval on
the i[Phone|Pod|Pad] settings).
So, what you are doing by using forcedheartbeat is telling the server
that when it receives a PING, ignore the heartbeatinterval that the
device is sending (I forget what it is on the iPhone, but IIRC it's
something along the line of a few mintues), and force the request to
terminate after a set period of time. With your settings, it stays
connected for appoximately 25 seconds, and probably polls history
twice during each request.
All this being said, I don't remember exactly what problem I was
attempting to solve for you by telling you to tweak this, and the
thread history is gone from this reply. If it was to assist in the
device picking up server side changes to the calendar, this was likely
fixed by one of the recently discussed commits.
--
mike
The Horde Project (www.horde.org)
mrubinsk at horde.org
More information about the horde
mailing list