InvalidDavResponseException: Expected 207 Multi-Status, got 200 OK



  • when synchonizing with OwnCloud 9.0.1 I'll receive the following error:

    SYNCHRONIZATION INFO
    Synchronization phase: 9
    Account name: xxx.xxx
    Authority: com.android.contacts
    
    EXCEPTION:
    at.bitfire.dav4android.exception.InvalidDavResponseException: Expected 207 Multi-Status, got 200 OK
    	at at.bitfire.dav4android.DavResource.assertMultiStatus(DavResource.java:323)
    	at at.bitfire.dav4android.DavAddressBook.multiget(DavAddressBook.java:110)
    	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.downloadRemote(ContactsSyncManager.java:202)
    	at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.java:169)
    	at at.bitfire.davdroid.syncadapter.ContactsSyncAdapterService$ContactsSyncAdapter.onPerformSync(ContactsSyncAdapterService.java:66)
    	at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:272)
    
    SOFTWARE INFORMATION
    DAVdroid version: 1.0.6 (96) Thu Apr 07 08:39:26 GMT+02:00 2016
    Installed from: com.android.vending
    JB Workaround installed: no
    
    CONFIGURATION
    System-wide synchronization: automatically
    Account: xxx.xxx
      Address book sync. interval: 240 min
      Calendar     sync. interval: 240 min
      OpenTasks    sync. interval: —
    
    SQLITE DUMP
    android_metadata
    	|  locale |
    	|  de_DE |
    > ---------
    > settings
    > 	|  setting | value |
    > 	|  hint_OpenTasksNotInstalled | 0 |
    > ----------
    > services
    > 	|  _id | accountName | service | principal |
    > 	|  6 | xxx.xxx | carddav | https://xxx.xxx.com/remote.php/dav/principals/users/xxx.xxx/ |
    > 	|  7 | xxx.xxx | caldav | https://xxx.xxx.com/remote.php/dav/principals/users/xxx.xxx/ |
    > ----------
    > sqlite_sequence
    > 	|  name | seq |
    > 	|  services | 7 |
    > 	|  homesets | 4 |
    > 	|  collections | 8 |
    > ----------
    > homesets
    > 	|  _id | serviceID | url |
    > 	|  3 | 6 | https://xxx.xxx.com/remote.php/dav/addressbooks/users/xxx.xxx/ |
    > 	|  4 | 7 | https://xxx.xxx.com/remote.php/dav/calendars/xxx.xxx/ |
    > ----------
    > collections
    > 	|  _id | serviceID | url | readOnly | displayName | description | color | timezone | supportsVEVENT | supportsVTODO | sync |
    > 	|  5 | 6 | https://xxx.xxx.com/remote.php/dav/addressbooks/users/xxx.xxx/openfellas/ | 0 | xxx | <null> | <null> | <null> | <null> | <null> | 1 |
    > 	|  6 | 6 | https://xxx.xxx.com/remote.php/dav/addressbooks/users/xxx.xxx/privat/ | 0 | privat | <null> | <null> | <null> | <null> | <null> | 0 |
    > 	|  7 | 7 | https://xxx.xxx.com/remote.php/dav/calendars/xxx.xxx/pers%c3%b6nlich/ | 0 | Persönlich | Persönlich | <null> | <null> | 1 | 1 | 0 |
    > 	|  8 | 7 | https://xxx.xxx/remote.php/dav/calendars/xxx.xxx/contact_birthdays/ | 0 | contact_birthdays | <null> | <null> | <null> | 1 | 1 | 0 |
    > ----------
    >
    > SYSTEM INFORMATION
    > Android version: 6.0.1 (cm_jfltexx-userdebug 6.0.1 MHC19Q bf95fd2724 test-keys)
    > Device: Samsung GT-I9505 (jfltexx)
    

    The owncloud server is running on NGINX using the recommended configuration from here: https://github.com/owncloud/documentation/issues/2014

    I'm using the same URL within the Thunderbird addon "Inverse SOGo Connector" without any issues: http://sogo.nu/download.html#/frontends

    The nginx server logins shows the following message during synchronization kick off:

    185.17.205.29 - xxx.xxx [10/Apr/2016:18:58:56 +0200] "PROPFIND /remote.php/dav/addressbooks/users/xxx.xxx/xxx/ HTTP/1.1" 207 807 "-" "DAVdroid/1.0.6 (2016/04/07; dav4android; okhttp3) Android/6.0.1" "-"
    185.17.205.29 - xxx.xxx [10/Apr/2016:18:58:57 +0200] "REPORT /remote.php/dav/addressbooks/users/xxx.xxx/xxx/ HTTP/1.1" 207 60992 "-" "DAVdroid/1.0.6 (2016/04/07; dav4android; okhttp3) Android/6.0.1" "-"
    185.17.205.29 - xxx.xxx [10/Apr/2016:18:58:58 +0200] "REPORT /remote.php/dav/addressbooks/users/xxx.xxx/xxx/ HTTP/1.1" 200 5 "-" "DAVdroid/1.0.6 (2016/04/07; dav4android; okhttp3) Android/6.0.1" "-"
    185.17.205.29 - xxx.xxx [10/Apr/2016:18:58:59 +0200] "PROPFIND /remote.php/webdav/ HTTP/1.1" 207 385 "-" "Mozilla/5.0 (Linux) mirall/2.1.1" "-"
    

    I'm searching now on Google and several forums without any results. Hope someone can help on this issue.


  • developer

    @ronald.hanke As you can see in your logs (and the DAVdroid exception report):

    185.17.205.29 - xxx.xxx [10/Apr/2016:18:58:58 +0200] "REPORT /remote.php/dav/addressbooks/users/xxx.xxx/xxx/ HTTP/1.1" 200 5 "-" "DAVdroid/1.0.6 (2016/04/07; dav4android; okhttp3) Android/6.0.1" "-"
    

    Your server sends a 200 OK answer instead of the required 207 Multi-status answer (in reply to a REPORT calendar-multiget request). This is invalid and indicates some server problem (misconfiguration, bug, etc.)

    If you would have a look at the logs too, you would see the exact request and the questionable reply.



  • sorry, I missed the log. Attached the results. I can see the exception there as well but cannot identify the reason. It seems all contacts got downloaded.

    As a matter of fact, the calendar app is not installed as it's not needed. Hopefully this is not causing the issue?

    Please see the log file.
    0_1460325691757_davdroid-4929-20160410-234949.txt



  • not sure if this is important, the addressbook that should be synchronized is a shared addressbook.


  • developer

    As you can see in the logs:

    2016-04-10 23:50:02 1 [HttpClient$1] --> REPORT https://xxx.xxx.com/remote.php/dav/addressbooks/users/xxx.xxx/xxx/
    …
    2016-04-10 23:50:02 1 [HttpClient$1] <?xml version='1.0' encoding='UTF-8' ?><CARD:addressbook-multiget xmlns="DAV:" xmlns:CARD="urn:ietf:params:xml:ns:carddav"><prop><getcontenttype /><getetag /><CARD:address-data content-type="text/vcard" version="4.0" /></prop><href>/remote.php/dav/addressbooks/users/xxx.xxx/xxx/C6B664BE-0DF0-0001-D64A-9CE0157094E0.vcf</href>…</CARD:addressbook-multiget>
    2016-04-10 23:50:02 1 [HttpClient$1] --> END REPORT (1374-byte body)
    …
    2016-04-10 23:50:02 1 [HttpClient$1] <-- 200 OK https://xxx.xxx.com/remote.php/dav/addressbooks/users/xxx.xxx/xxx/
    2016-04-10 23:50:02 1 [HttpClient$1] Content-Type: text/html; charset=UTF-8
    2016-04-10 23:50:03 1 [HttpClient$1] <-- END HTTP (0-byte body)
    2016-04-10 23:50:03 1 [syncadapter.SyncManager] HTTP/DAV Exception during sync
    EXCEPTION at.bitfire.dav4android.exception.InvalidDavResponseException: Expected 207 Multi-Status, got 200 OK
    	at at.bitfire.dav4android.DavResource.assertMultiStatus(DavResource.java:323)
    

    Your server sends a 0-byte text/html body with 200 OK status, instead of the 207 Multi-Status, which is required for a REPORT addressbook-multiget.

    I suggest to ask in the OwnCloud community, because this is a server problem.


Log in to reply
 

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.