| Author |
|
user34533 Newbie

Joined: 24 September 2026 Location: Netherlands
Online Status: Offline Posts: 1
|
| Posted: 24 September 2026 at 6:14am | IP Logged
|
|
|
Hello,
We host WebMail Pro with the built-in DAV server for our customers. One customer told us that as soon as people respond to a meeting, invitations start going out again. They use eM Client, and eM Client's developers said the server ignores SCHEDULE-AGENT=NONE. That's true (more on that below), but when we went through the logs of their test, the extra invitations came from the Accept/Decline links in the invitation email.
What happened
1. The organizer saves an event in the webmail calendar. Every attendee gets an invitation.
2. An attendee with a Gmail address clicks Accept in that email.
3. The organizer's event is saved with only that attendee. The others are gone from it.
4. That save goes through the CalDAV scheduler. The attendee list changed, so it counts as significant, and the person who just accepted gets a new invitation right away.
5. The organizer saves the event again with everyone on it, and all attendees get invited again.
Where it goes wrong
In CalendarMeetingsPlugin, Manager::appointmentAction() removes all ATTENDEE properties and adds back only the person who responded, which makes sense for the reply. But the same object is then saved with updateEventRaw(). For attendees with an account on our server, that goes to their own calendar, so nothing breaks. For an external attendee, it goes to the organizer's calendar and overwrites the event. Because Afterlogic's Schedule\Plugin counts ATTENDEE as a significant property, the shorter list then triggers a new REQUEST.
Possible fix
Stripping the other attendees only from the reply, and just updating the responder's PARTSTAT in the stored event, would fix this for us. The attendee list stays the same, so no new invitation goes out.
Two smaller things we noticed
- The links do the RSVP on a plain GET. We saw an invite link opened from a Google IP a few seconds after the attendee's own click, which sent the organizer a second reply. A confirmation step would stop mail scanners from answering on someone's behalf.
- Sabre\VObject\ITip\Broker only skips attendees with SCHEDULE-AGENT=CLIENT (parseEventInfo() and parseEventForAttendee()), so NONE is handled like SERVER. RFC 6638 says the server should only schedule for SERVER or no parameter. We have events where the attendees have NONE and still got SCHEDULE-STATUS=1.1, which IMipPlugin sets after sending. A plain RSVP from eM Client doesn't cause any mail, but a real edit (time, title, attendees) does.
Versions
Code:
afterlogic 9.8.6.build9
afterlogic/dav 4.1.19
sabre/dav 4.7.1
sabre/vobject 4.6.1 |
|
|
Happy to share more log details privately if that helps.
Thanks!
|
| Back to Top |
|
| |