[Kde-pim] Seeking advice on how to fix bug 282346

Stephan Diestelhorst stephan.diestelhorst at gmail.com
Wed Nov 9 14:18:32 GMT 2011


Sergio,
  any update on the matter below?

Thanks,
  Stephan

On 21 September 2011 13:16, Stephan Diestelhorst
<stephan.diestelhorst at gmail.com> wrote:
> On Tue, Sep 20, 2011 at 9:21 PM, Stephan Diestelhorst
> <stephan.diestelhorst at gmail.com> wrote:
>> Dear KDE PIM hackers,
>>  I decided that I have moaned about PIM bugs long enough and
>> started looking into https://bugs.kde.org/show_bug.cgi?id=282346
>>
>> Quick summary is that the calendar sends out event updates, on
>> changing an appointment even though:
>>
>> * I am not the organiser of the event
>> * I disabled Groupware communication to work around the issue
>>
>> 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.
>
> After digging through current GIT, I have found that the code flow is
> still present
> that way. The two changesets that introduce this regression are:
>
> commit d75ba75aea478f754b12f4a1c245dab2d4eb50d9
> Author: Sergio Martins <iamsergio at gmail.com>
> Date:   Sun Mar 13 21:10:36 2011 +0000
>
>    Only ask to send invitations when the ItemModifyJob completes, and
> not before.
>
>    Otherwise we would be sending invitations when the job failed.
>
>    Part of kolab/issue4096
>
> commit d5b228631ecf89df4b9e3c9e3c4e8d866e72a11d
> Author: Sergio Martins <iamsergio at gmail.com>
> Date:   Sun Mar 13 21:04:35 2011 +0000
>
>    New method, handleIncidenceAboutToBeModified() which contains the
> invitation code
>    that should be executed before the ItemModifyJob.
>
>    If the user isn't the organizer, it asks the user if he really
> wants to modify the incidence.
>
>    Regarding invitations, there are questions that must be made
> before the ItemModifyJob and
>    questions that must be made after. Before this commit it wasn't
> possible to make this distinction.
>
>    Part of kolab/issue4096.
>
> Sergio, could you comment on my observations?
>
> Many thanks,
>  Stephan
>
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list