[horde] activesync workflow

Michael J Rubinsky mrubinsk at horde.org
Thu Sep 17 15:47:31 UTC 2015


Quoting cheese at nosuchhost.net:

> hi
>
> i would need some clarification how activesync works. i assume:
>
> * activesync is stateless, there works almost "out of the box"  
> behind a loadbalancer.

The connections are stateless. There is state, but it's maintained via  
synckeys that are transmitted withing the wbxml data itself. In horde,  
this device state is stored in the database backend.


> * activesync keeps connections to the mobile device and outlook 2013  
> for long timeranges. there are two parameters:
>
> connectiontimeout=600
> timeout=4000
>
> timeout on apache needs to be larger than  
> $conf[activesync][ping][heartbeatmax]

At least this long. Best to be longer, since the connection may need a  
bit longer if changes are detected at the very end of the hearbeat.

> apache's timeout means that if no data was sent for 4000 seconds the  
> connection is closed. if everything is OK, than this limit should  
> never be reached, as we honour hearthbeats?

Sounds correct. I should note that 600 is a fairly short time for  
heartbeat. The longer the better, as far as clients are concerned.  
Short heartbeats will use considerably more battery and bandwidth.


> if i have two hordes behind a loadbalancer, how would i sanely  
> update the hordes without having connections disconnected? some  
> devices are quite picky with disruptions.

There is not much you can do about this. It's always safest to disable  
Horde logins when updating. From the client it will just look like  
your network is unreachable. Ideally, there are some generic WBXML  
responses with an various status codes we could send to tell the  
client to just try again later. The problem is, the status codes are  
different depending on the EAS version in use, the type of request  
being processed etc... so we end up having to parse a good bit of the  
request anyway...

> * how long will activesync keep imap-sessions to the backend systems?

ActiveSync doesn't keep any persistent imap sessions opened. It  
connects, checks what it needs to, and disconnects. Internally, the  
imap client may keep the connection opened between checks during the  
same PING request, but re-connection should happen transparently.

> would horde reconnect gracefully if some connection is broken (again  
> because of updates on the backend imap-systems), or would it expose  
> that disconnections to its clients?

The behavior is different depending on what type of request is being  
attempted. If the IMAP backend is unexpectedly unavailable during a  
PING or looping SYNC, the ActiveSync code logs this as an error, but  
simply returns an empty change set to the client. If it's during  
something like an ITEMOPERATIONS request or a SYNC request that is  
requesting message details, this will return an error to the client.  
Some clients will display this to the user, others will simply  
indicate some issue.

-- 
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5751 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/horde/attachments/20150917/de375ab3/attachment.bin>


More information about the horde mailing list