ICals contain invalid ORGANIZER values



  • Downloading items seems to work, but if I create a new event on my android device and sync it fails.
    In the zimbra logs I see this:

    2013-10-16 16:12:47,005 WARN  [qtp719953478-169240:https://zimbra.domain.tld:443/dav/account@domain.tld/Calendar/4317ccae-d66f-4f57-b2ee-36525a90cd83.ics] [aname=account@domain.tld;ip=xxx.xxx.xxx.xxx;ua=DAVdroid;] dav - could not get the account matcher for account@domain.tld@zimbra.domain.tld/dav/
    com.zimbra.common.service.ServiceException: invalid request: must be valid email address: account@domain.tld@zimbra.domain.tld/dav/
    ExceptionId:qtp719953478-169252:https://zimbra.domain.tld:443/dav/account@domain.tld/Calendar/5743fb13-09cb-402e-bb8c
    -372a7d92c91e.ics:1381932875622:6315fe25cd3624a9
    Code:service.INVALID_REQUEST
            at com.zimbra.common.service.ServiceException.INVALID_REQUEST(ServiceException.java:265)
            at com.zimbra.cs.account.IDNUtil.toAsciiEmail(IDNUtil.java:305)
            at com.zimbra.cs.account.ldap.LdapProvisioning.fixupAccountName(LdapProvisioning.java:874)
            at com.zimbra.cs.account.ldap.LdapProvisioning.getAccountByNameInternal(LdapProvisioning.java:907)
            at com.zimbra.cs.account.ldap.LdapProvisioning.getAccountByName(LdapProvisioning.java:888)
            at com.zimbra.cs.account.ldap.LdapProvisioning.getAccountByName(LdapProvisioning.java:882)
            at com.zimbra.cs.account.ldap.LdapProvisioning.get(LdapProvisioning.java:792)
            at com.zimbra.cs.account.ldap.LdapProvisioning.get(LdapProvisioning.java:776)
            at com.zimbra.cs.dav.caldav.CalDavUtils.removeAttendeeForOrganizer(CalDavUtils.java:45)
            at com.zimbra.cs.dav.caldav.CalDavUtils.removeAttendeeForOrganizer(CalDavUtils.java:81)
            at com.zimbra.cs.dav.resource.CalendarCollection.createItem(CalendarCollection.java:318)
            at com.zimbra.cs.dav.service.method.Put.handle(Put.java:47)
            at com.zimbra.cs.dav.service.DavServlet.service(DavServlet.java:244)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1320)
            at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:52)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:57)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
            at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:256)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:45)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:114)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:473)
            at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:344)
            at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:315)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
            at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:317)
            at org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:81)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.Server.handle(Server.java:369)
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)
            at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:944)
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1005)
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            at org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
            at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
            at java.lang.Thread.run(Thread.java:722)
    2013-10-16 16:14:35,626 INFO  [qtp719953478-169252:https://zimbra.domain.tld:443/dav/account@domain.tld/Calendar/5743fb13-09cb-402e-bb8c-372a7d92c91e.ics] [aname=account@domain.tld;ip=xxx.xxx.xxx.xxx;ua=DAVdroid;] dav - sending http error 500 because: cannot create icalendar item
    

  • developer

    Did you use attendees? Please provide details about the vcard you tried to add. Does it work when you upload a vcard with a name only?



  • I did not use attendees, the only thing I changed in the calendar app was the event name.
    It seems to me that the event organizor is account@domain.tld@zimbra.domain.tld/dav/ and it should be account@domain.tld. I haven't verified that yet.


  • developer

    What do you mean by "it fails"? DAVdroid fails or Zimbra fails? I'd close this issue if it's a Zimbra problem.



  • It fails: the event I've created on my android device doesn't sync to Zimbra.
    Zimbra throws an error because it doesn't accept the event's ORGANIZER property.
    It's invalid or doesn't match the zimbra account - Zimbra expects the organizer to be account@domain.tld and not account@domain.tld@zimbra.domain.tld/dav/

    Example event exported from android using iCal Import/Export 2.0:

    BEGIN:VEVENT
    ORGANIZER:account@domain.tld@zimbra.domain.tld/dav/
    SUMMARY:Test
    LOCATION:
    DESCRIPTION:
    DTSTART;TZID=Europe/Brussels:20131001T000000
    DTEND;TZID=Europe/Brussels:20131001T010000
    DTSTAMP:20131026T150020Z
    UID:1382799620005
    END:VEVENT
    

  • developer

    Thank you, that's right. I think this would require to

    1. query the email address of the user in the setup dialog
    2. set the ORGANIZER property manually.

    The incorrect ORGANIZER value comes from Android (DAVdroid never sets it) which apparently sets it to the account name of the event creator.


  • developer

    Android takes the account name as the ORGANIZER email address. So, users are advised to enter their email address as account name.


Log in to reply
 

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