[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