Bug 282346 - KOrganizer resends meeting invites, even though Groupware communication is off
Summary: KOrganizer resends meeting invites, even though Groupware communication is off
Status: RESOLVED FIXED
Alias: None
Product: korganizer
Classification: Applications
Component: invitations (show other bugs)
Version: 4.7
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Sergio Martins
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-19 13:14 UTC by Stephan Diestelhorst
Modified: 2011-11-09 20:58 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stephan Diestelhorst 2011-09-19 13:14:34 UTC
Version:           4.7 (using KDE 4.7.0) 
OS:                Linux

I received an invitation as an ICS file and in order to not cofuse everybody by clicking on "accept" inside the email and KDE PIM sending out obscure emails, I exported the ICS file, and imported it manually in KOrganizer.

After adding the appointment, however, I had to move it to the proper time (see my other bug on TZ handling) and KOrganizer happily sent around emails to the entire audience.

However, my settings in "group planning" are all *unchecked*, e.g., "use group ware communication" and "send a copy of the appointment email" (German translation, may not fit 100%)

However, there was an SMTP server noted.

Reproducible: Didn't try

Steps to Reproduce:
Receive an (Outlook) event invitation, export the ICS file, import it, merge into existing calendar. Move the appointment (to correct time).

Actual Results:  
KOrganizer sends out an email, containing the entire original invite.

Expected Results:  
Korganizer < 4.7.0 used to ask whether I wanted to send out a "synchronisation" message, given that I was not the organiser. KOrganiser 4.7 should honour my setting of not using groupware communication and not just send out embarrassing emails without my consent.
Comment 1 Stephan Diestelhorst 2011-09-19 13:16:22 UTC
Just inspecting the email that got send: it is not the original email, but rather is a text rending of the appointment and the attached ICS file.
Comment 2 Stephan Diestelhorst 2011-09-21 09:10:05 UTC
Digging through the code, and using GDB, I confirmed the following
flow of code (on 4.7.0):

  bool IncidenceChanger::Private::performChange
    ( Change *change ) at calendarsupport/incidencechanger.cpp:99

  CalendarSupport::IncidenceChanger::Private::changeIncidenceFinished
    (this=0xc81910,) at calendarsupport/incidencechanger.cpp:233

  CalendarSupport::InvitationHandler::sendIncidenceModifiedMessage
    (this=0x7fffffffcfc0,     method=KCalCore::iTIPRequest,
incidence=..., attendeeStatusChanged=false) at
calendarsupport/next/invitationhandler.cpp:374

Interestingly, IncidenceChanger::Private::performChange
(calendarsupport/incidencechanger.cpp) contains all the proper logic:
it checks KCalPrefs::instance()->mUseGroupwareCommunication and then
displays a message box, if I am not the organiser of an event, via
InvitationHandler::handleIncidenceAboutToBeModified
(calendarsupport/next/invitationhandler.cpp)

However, it seems the logic has been duplicated and split to handle
asynchronous Akonadi interaction through new Akonadi::ItemModifyJob(...)
and then void IncidenceChanger::Private::changeIncidenceFinished( KJob *j ).

That function does not check for the mUseGroupwareCommunication flag,
nor does it present the user with a dialog box when he is not the organiser.
Through handler.sendIncidenceModifiedMessage(...) which eventually
ends up calling
   ...
    } else {
      return d->sentInvitation( KMessageBox::Yes, incidence, method );
    }
sending out invitations, although the user is not the organiser nor has group-
communication enabled and never has a chance to intercept.

Adding an additional check for the groupware flag and asking the user
in changeIncidenceFinished once again would b straight-forward. Any
preference?
Comment 3 Stephan Diestelhorst 2011-09-21 11:18:16 UTC
This has been caused by

commit d75ba75aea478f754b12f4a1c245dab2d4eb50d9
Author: Sergio Martins <iamsergio@gmail.com>
Date:   Sun Mar 13 21:10:36 2011 +0000

and

commit d5b228631ecf89df4b9e3c9e3c4e8d866e72a11d
Author: Sergio Martins <iamsergio@gmail.com>
Date:   Sun Mar 13 21:04:35 2011 +0000
Comment 4 Stephan Diestelhorst 2011-09-21 15:17:01 UTC
Adding Sergio, since his changes seem to introduce the regression.
Comment 5 Sergio Martins 2011-11-09 20:54:09 UTC
Git commit 441d81e5aaa3eb5d47586afc1a368a13ce557789 by Sergio Martins.
Committed on 09/11/2011 at 21:45.
Pushed by smartins into branch 'master'.

Don't send iTip messages if groupware is turned off.

Debugged by Stephan Diestelhorst.

BUG: 282346

M  +15   -14   calendarsupport/incidencechanger.cpp

http://commits.kde.org/kdepim/441d81e5aaa3eb5d47586afc1a368a13ce557789
Comment 6 Sergio Martins 2011-11-09 20:58:18 UTC
Git commit 1ecd90656cdd4a1774ad30c56baed5fccafeb244 by Sergio Martins.
Committed on 09/11/2011 at 21:45.
Pushed by smartins into branch 'KDE/4.7'.

Don't send iTip messages if groupware is turned off.

Debugged by Stephan Diestelhorst.

BUG: 282346
(cherry picked from commit 441d81e5aaa3eb5d47586afc1a368a13ce557789)

Conflicts:

	calendarsupport/incidencechanger.cpp

M  +15   -12   calendarsupport/incidencechanger.cpp

http://commits.kde.org/kdepim/1ecd90656cdd4a1774ad30c56baed5fccafeb244