Couldn't parse Multi-Status response on REPORT multi-get



  • Hello,

    I'm using DAVDroid 0.6.2 together with SOGo 2.2.7. Syncing contacts works but syncing my calendar does not:

     E/davdroid.DavSyncAdapter( 7578): Invalid DAV response
     E/davdroid.DavSyncAdapter( 7578): at.bitfire.davdroid.webdav.DavException: Invalid DAV response: Couldn't parse Multi-Status response on REPORT multi-get
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.webdav.WebDavResource.processMultiStatus(WebDavResource.java:442)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.webdav.WebDavResource.multiGet(WebDavResource.java:323)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.resource.RemoteCollection.multiGet(RemoteCollection.java:92)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.syncadapter.SyncManager.pullNew(SyncManager.java:190)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.syncadapter.SyncManager.synchronize(SyncManager.java:87)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.syncadapter.DavSyncAdapter.onPerformSync(DavSyncAdapter.java:133)
     E/davdroid.DavSyncAdapter( 7578):  at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
     E/davdroid.DavSyncAdapter( 7578): Caused by: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, name=, required=true, type=void) on field 'propstat' java.util.List at.bitfire.davdroid.webdav.DavResponse.propstat for class at.bitfire.davdroid.webdav.DavResponse at line 42
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.validate(Composite.java:644)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readElements(Composite.java:449)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.read(Composite.java:201)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.read(Composite.java:148)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:167)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:124)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.read(Composite.java:201)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Composite.read(Composite.java:148)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Persister.read(Persister.java:625)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Persister.read(Persister.java:606)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Persister.read(Persister.java:584)
     E/davdroid.DavSyncAdapter( 7578):  at org.simpleframework.xml.core.Persister.read(Persister.java:543)
     E/davdroid.DavSyncAdapter( 7578):  at at.bitfire.davdroid.webdav.WebDavResource.processMultiStatus(WebDavResource.java:440)
     E/davdroid.DavSyncAdapter( 7578):  ... 6 more
     I/davdroid.DavSyncAdapter( 7578): Sync complete for com.android.calendar
     D/davdroid.DavSyncAdapter( 7578): Closing httpClient
     D/SyncManager( 1173): failed sync operation ACCOUNTNAME u0 (bitfire.at.davdroid), com.android.calendar, SERVER, latestRunTime 179646770, reason: AutoSync, SyncResult: stats [ numParseExceptions: 1]
     D/SyncManager( 1173): not retrying sync operation because the error is a hard error: ACCOUNTNAME u0 (bitfire.at.davdroid), com.android.calendar, SERVER, latestRunTime 179657173, reason: AutoSync
    

    Syncing the calendar with Thunderbird and the Inverse SOGo Connector addon works as well. Before the error appears, I have a few warnings on some entries (though not all) in the style of

      W/davdroid.URIUtils( 7578): Trying to repair invalid URL: /SOGo/dav/ACCOUNTNAME/Calendar/personal/20140715T133439Z-29550@2e41f07cc53dbea9 -> /SOGo/dav/ACCOUNTNAME/Calendar/personal/20140715T133439Z-29550%402e41f07cc53dbea9
    

    where it replaces an @ with an %.

    Edit: Synchronising with CalDAV works as well.


  • developer

    Please provide full logs including the traffic.

    E/davdroid.DavSyncAdapter( 7578): Caused by: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, name=, required=true, type=void) on field 'propstat' java.util.List at.bitfire.davdroid.webdav.DavResponse.propstat for class at.bitfire.davdroid.webdav.DavResponse at line 42

    However, it seems like the server doesn't send a propstat element in it's response.

    By the way, URLs must not contain unencoded '@' as it's a reserved character and may only be used to separate auth. credentials from the host part.



  • Thank you for your reply. These are the two ICS-files which are being processed directly before the error happens. The first:

     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "BEG"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "IN:VEVENT[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTSTART;VALUE=DATE-TIME:20130304T080000Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTEND;VALUE=DATE-TIME:20130304T155500Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTSTAMP:20130913T205032Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "UID:UID-REMOVED@google.com[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "CREATED:20130305T205844Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "LAST-MODIFIED:20130305T205844Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "SEQUENCE:0[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "STATUS:CONFIRMED[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "SUMMARY:SUMMARY REMOVED[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "TRANSP:OPAQUE[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "END:VEVENT[\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "END:VCALENDAR</C:calendar-data></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/UID-REMOVED@google.com</D:href><D:propstat><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag><C:calendar-data>BEGIN:VCALENDAR[\n]
    

    And the second, which could hence be the faulty one – although including propstat:

     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "BEGIN:VEVENT[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTSTART;VALUE=DATE-TIME:20120815T073000Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTEND;VALUE=DATE-TIME:20120815T083000Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "DTSTAMP:20130913T205032Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "UID:UID-REMOVED@google.com[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "CREATED:20120420T132230Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "LAST-MODIFIED:20120420T132230Z[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "SEQUENCE:0[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "STATUS:CONFIRMED[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "SUMMARY:SUMMARY REMOVED[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "TRANSP:OPAQUE[\r][\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "END:VEVENT[\n]"
     ^[[01;31m^[[KD/ch.boye^[[m^[[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "END:VCALENDAR</C:calendar-data></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response></D:multistatus>"
     ^[[01;31m^[[KE/davdroid^[[m^[[K.DavSyncAdapter( 7578): Invalid DAV response
    

    Before that, I saw many lines like this – which contain 404s:

     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "se><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/20140324T160203Z-12249@UID-REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED2</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/20140328T064819Z-20853@UID-REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED3</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/20140407T144424Z-6575@UID-REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/20140408T140406Z-401@UID-REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found<"
    

    And here's from the initial connection:

     #[01;31m#[KD/davdroid#[m#[K.WebDavResource( 7578): Processing multi-status element: https://SERVER_ADDRESS/SOGo/dav/ACCOUNTNAME/Calendar/personal/
     #[01;31m#[KD/davdroid#[m#[K.SyncManager( 7578): Last local CTag = null; current remote CTag = 1409823196
     #[01;31m#[KI/davdroid#[m#[K.SyncManager( 7578): Fetching remote resource list
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "PROPFIND /SOGo/dav/ACCOUNTNAME/Calendar/personal/ HTTP/1.1[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Content-Type: text/xml; charset=UTF-8[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Depth: 1[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Content-Length: 134[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Host: SERVER_ADDRESS[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Connection: Keep-Alive[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "User-Agent: DAVdroid/0.6.2[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "Authorization:"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "<propfind xmlns="DAV:">[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "   <prop>[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "      <CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "      <getetag/>[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "   </prop>[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 >> "</propfind>"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "HTTP/1.1 207 Multi-Status[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Date: Thu, 04 Sep 2014 09:38:57 GMT[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Server: SOPE 4.9.37/WebDAV[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Pragma: no-cache[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Cache-Control: no-cache[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Ms-Author-Via: DAV[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Content-Length: 134951[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Content-Type: text/xml; charset="utf-8"[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "X-Dav-Error: 200 No error[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Via: 1.1 SERVER_ADDRESS[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Vary: Accept-Encoding[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Keep-Alive: timeout=15, max=99[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "Connection: Keep-Alive[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "[\r][\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "<?xml version="1.0" encoding="utf-8"?>[\n]"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "<D:multistatus xmlns:a="http://calendarserver.org/ns/" xmlns:D="DAV:"><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><a:getctag>1409823196</a:getctag><D:getetag>&quot;None&quot;</D:getetag></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:geteta"
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "g></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag><
     #[01;31m#[KD/ch.boye#[m#[K.httpclientandroidlib.wire( 7578): http-outgoing-4 << "D:status><D:prop><D:getetag>&quot;gcs00000000&quot;</D:getetag></D:prop></D:propstat><D:propstat><D:status>HTTP/1.1 404 Not Found</D:status><D:prop><a:getctag/></D:prop></D:propstat></D:response><D:response><D:href>/SOGo/dav/ACCOUNTNAME/Calendar/personal/REMOVED</D:href><D:propstat>"
    

    If you need further information, tell me. I just didn't want to paste 1400 lines of debug output. Where do I go from here? Do I have to find all faulty entries and fix them somehow? Is this element essential or why can the Thunderbird extension, the SOGo Web interface and CalDAV by Marten Gajda deal with it?

    And thank you again. Your efforts are highly appreciated.


  • developer

    And the second, which could hence be the faulty one – although including propstat:

    I'd need the logs starting with the the last REPORT request line before the "Invalid DAV response" as far as the exception.



  • Thank you very much for your patience. Here's a gist: https://gist.github.com/0nse/c78e25d6b334fbf53d2b
    I hope this time, I've got it all.


  • developer

    Caused by: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, name=, required=true, type=void) on field 'propstat' java.util.List at.bitfire.davdroid.webdav.DavResponse.propstat for class at.bitfire.davdroid.webdav.DavResponse at line 319

    It seems like SimpleXML doesn't find the propstat element although it's there. I can't reproduce that with my SOGo testing server. Would it be possible for you to provide a test account where the problem occurs and send it to play@bitfire.at?



  • As I couldn't go this long without a working calendar, I set up a new one. I currently don't have time to recreate a calendar free of my personal information which would raise this problem. After all, I believe the calendar was broken due to migrating it from different accounts (Google Calendar => Owncloud 5 => Owncloud 7 => SOGo) and various calendar applications would probably only display it due to a high error tolerance. Hence, I'd see this as a rare special case and would close this issue as "cannot reproduce".


  • developer

    Ok, good that it now works for you.


Log in to reply
 

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