DAVdroid 0.7.x was syncing fine with my home run Debian/wheezy ownCloud 7.0.2+dfsg-1~bpo70+2 server. I upgraded to DAVdroid 0.8.0 and syncing the calendar stopped working. My contacts are still syncing fine. When I force a calendar sync the wheel turns for ~ 49 seconds (on the server apache2 is using 98% of the CPU during this time) and then the sync stops and the time of the last successful sync (“1/06/2015 21:05”) is shown again.
The logs show:
D/davdroid.SyncManager( 8840): Last local CTag = 10474; current remote CTag = 10477
I/davdroid.SyncManager( 8840): Fetching remote resource list
D/HttpClient( 8840): Connection request: [route: HttpRoute[{s}->https://owncloud.?????:443]][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 3]
D/HttpClient( 8840): Connection leased: [id: 40][route: HttpRoute[{s}->https://owncloud.?????:443]][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 3]
D/HttpClient( 8840): Executing request REPORT /remote.php/caldav/calendars/stuart/personal/ HTTP/1.1
D/HttpClient( 8840): Target auth state: SUCCESS
D/HttpClient( 8840): Proxy auth state: UNCHALLENGED
D/Wire ( 8840): http-outgoing-40 >> "REPORT /remote.php/caldav/calendars/stuart/personal/ HTTP/1.1[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Content-Type: text/xml; charset=UTF-8[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Accept: text/xml[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Depth: 1[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Content-Length: 260[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Host: owncloud.?????[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Connection: Keep-Alive[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "User-Agent: DAVdroid/0.8.0[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "Authorization: Basic c3R1YXJ0OW15NjcxSuaw==[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "[\r][\n]"
D/Wire ( 8840): http-outgoing-40 >> "<C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns="DAV:">[\n]"
D/Wire ( 8840): http-outgoing-40 >> " <C:filter>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " <C:comp-filter name="VCALENDAR">[\n]"
D/Wire ( 8840): http-outgoing-40 >> " <C:comp-filter name="VEVENT"/>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " </C:comp-filter>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " </C:filter>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " <prop>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " <getetag/>[\n]"
D/Wire ( 8840): http-outgoing-40 >> " </prop>[\n]"
D/Wire ( 8840): http-outgoing-40 >> "</C:calendar-query>"
D/davdroid.DavSyncAdapter( 8840): Closing httpClient
D/Wire ( 8840): http-outgoing-40 << "[read] I/O error: Read timed out"
D/HttpClient( 8840): http-outgoing-40: Close connection
D/HttpClient( 8840): http-outgoing-40: Shutdown connection
D/HttpClient( 8840): Connection discarded
D/HttpClient( 8840): http-outgoing-40: Close connection
D/HttpClient( 8840): Connection released: [id: 40][route: HttpRoute[{s}->https://owncloud.?????:443]][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 3]
E/davdroid.DavSyncAdapter( 8840): I/O error (Android will try again later)
E/davdroid.DavSyncAdapter( 8840): java.net.SocketTimeoutException: Read timed out
E/davdroid.DavSyncAdapter( 8840): at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
E/davdroid.DavSyncAdapter( 8840): at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:690)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.conn.LoggingInputStream.read(LoggingInputStream.java:87)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:136)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:152)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:270)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.io.AbstractMessageParserHC4.parse(AbstractMessageParserHC4.java:260)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:161)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:153)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:260)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:178)
E/davdroid.DavSyncAdapter( 8840): at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
E/davdroid.DavSyncAdapter( 8840): at at.bitfire.davdroid.webdav.WebDavResource.report(WebDavResource.java:339)
E/davdroid.DavSyncAdapter( 8840): at at.bitfire.davdroid.resource.RemoteCollection.getMemberETags(RemoteCollection.java:100)
E/davdroid.DavSyncAdapter( 8840): at at.bitfire.davdroid.syncadapter.SyncManager.synchronize(SyncManager.java:78)
E/davdroid.DavSyncAdapter( 8840): at at.bitfire.davdroid.syncadapter.DavSyncAdapter.onPerformSync(DavSyncAdapter.java:146)
E/davdroid.DavSyncAdapter( 8840): at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
I/davdroid.DavSyncAdapter( 8840): Sync complete for com.android.calendar
D/HttpClient( 8840): Connection manager is shutting down
D/HttpClient( 8840): Connection manager shut down
I tried to simulate the above request using curl to get an idea of how long ownCloud needs to complete the request. Is this the right way to do a REPORT request using curl?
:; time curl -o /tmp/report -v -X REPORT --user "$user:$pw" -d @/tmp/filename.dat https://$host/remote.php/caldav/calendars/$user/personal/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 88.171.134.228...
* Connected to owncloud.????? (88.171.134.228) port 443 (#0)
* found 174 certificates in /etc/ssl/certs/ca-certificates.crt
* ALPN, offering http/1.1
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA1
* server certificate verification OK
* server certificate status verification SKIPPED
* common name: owncloud.????? (matched)
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* subject: C=IT,L=Sydney,O=Pook IT,CN=owncloud.?????
* start date: Tue, 11 Nov 2014 23:02:37 GMT
* expire date: Fri, 29 Oct 2066 23:02:37 GMT
* issuer: C=IT,L=Sydney,O=Pook IT,CN=owncloud.?????
* compression: NULL
* ALPN, server did not agree to a protocol
* Server auth using Basic with user 'stuart'
> REPORT /remote.php/caldav/calendars/stuart/personal/ HTTP/1.1
> Host: owncloud.?????
> Authorization: Basic c3rR1YXJ0jw+oSnVuaw==
> User-Agent: curl/7.42.1
> Accept: */*
> Content-Length: 251
> Content-Type: application/x-www-form-urlencoded
>
} [251 bytes data]
* upload completely sent off: 251 out of 251 bytes
100 251 0 0 100 251 0 2 0:02:05 0:01:45 0:00:20 0< HTTP/1.1 207 Multi-Status
< Date: Sat, 06 Jun 2015 22:51:01 GMT
< Server: Apache
< X-Powered-By: PHP/5.4.39-0+deb7u2
< Set-Cookie: oce327bbe=tr9omm7; path=/; HttpOnly
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Strict-Transport-Security: max-age=31536000
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-Frame-Options: Sameorigin
< Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *
< X-Robots-Tag: none
< Set-Cookie: oce3247b7abe=29m1l64ha5; path=/; secure; HttpOnly
< Vary: Brief,Prefer
< Transfer-Encoding: chunked
< Content-Type: application/xml; charset=utf-8
<
{ [7 bytes data]
100 997k 0 997k 100 251 9591 2 0:02:05 0:01:46 0:00:19 227k
* Connection #0 to host owncloud.????? left intact
real 1m46.480s
user 0m0.020s
sys 0m0.012s
:; cat /tmp/filename.dat
<C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns="DAV:">
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT"/>
</C:comp-filter>
</C:filter>
<prop>
<getetag/>
</prop>
</C:calendar-query>
My ownCloud server is a SheevaPlug and I’m the only user.