#417: [PATCH] RFC5545 section 3.2.3 CUTYPE may not be set ----------------------------------+----------------------------------------- Reporter: mail@… | Owner: wsanchez@… Type: Defect | Status: new Priority: 5: Not set | Milestone: Component: Calendar Server | Severity: Other Keywords: | Radar: ----------------------------------+----------------------------------------- Creating events with Thunderbird the attendees were missing in the invitation mail. Looking at the events the following difference can be seen: iOS: {{{ ATTENDEE;CN=felix@derklecks.de;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS- ACTION;RSVP=TRUE:mailto:felix@example.com }}} Lightning: {{{ ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ- PARTICIPANT;RSVP=TRUE:mailto:felix@example.com }}} in mail.py the following is done: {{{ for attendeeProp in calendar.getAllAttendeeProperties(): params = attendeeProp.params() cutype = params.get('CUTYPE', (None,))[0] if cutype == "INDIVIDUAL" : cn = params.get("CN", (None,))[0] cuaddr = normalizeCUAddr(attendeeProp.value()) if cuaddr.startswith("mailto:"): mailto = cuaddr[7:] if not cn: cn = mailto else: emailAddress = params.get("EMAIL", (None,))[0] if emailAddress: mailto = emailAddress else: mailto = None if cn or mailto: attendees.append( (cn, mailto) ) }}} But reading RFC5545 there is the following: {{{ Description: This parameter can be specified on properties with a CAL-ADDRESS value type. The parameter identifies the type of calendar user specified by the property. If not specified on a property that allows this parameter, the default is INDIVIDUAL. Applications MUST treat x-name and iana-token values they don't recognize the same way as they would the UNKNOWN value. }}} Therefore the following patch should be applied: {{{ Index: twistedcaldav/mail.py =================================================================== --- twistedcaldav/mail.py (Revision 7047) +++ twistedcaldav/mail.py (Arbeitskopie) @@ -835,7 +835,7 @@ for attendeeProp in calendar.getAllAttendeeProperties(): params = attendeeProp.params() cutype = params.get('CUTYPE', (None,))[0] - if cutype == "INDIVIDUAL": + if cutype == "INDIVIDUAL" or cutype is None : cn = params.get("CN", (None,))[0] cuaddr = normalizeCUAddr(attendeeProp.value()) if cuaddr.startswith("mailto:"): }}} -- Ticket URL: <http://trac.calendarserver.org/ticket/417> Calendar and Contacts Server </> HTTP/WebDAV/CalDAV Server