Hi all, Did this issue #391, from what seems to be an older mailing list, ever get traction? I'm toying with getting back into active development on KDEPIM, and it seems the patches were never applied or reworked.
Any update would be appreciated, as would a CC, since I'm not subscribed. Thanks, Shaheed On 13 April 2014 at 01:52, <trac...@openchange.org> wrote: > Issue #391 has been updated by Jelmer Vernooij. > > Julien, ping? > > ________________________________ > > Bug #391: Multiple issues retrieving exceptions for recurring appointments > Multiple issues retrieving exceptions for recurring appointments > > Author: Shaheed Haque > Status: In Progress > Priority: Normal > Assignee: Julien Kerihuel > Category: openchange-client > Target version: openchange-1.0 BORG > Resolution: > > There seem to be several IDL issues which prevent retrieval of the > exceptions for recurring appointments. I've included a diff for the first 6 > issues as follows: > > 1. The OverrideFlags enum is encoded as 4 bytes instead of the 2 bytes > spec'd. > > 2. Several variable size arrays are specified using the "[size_is(x)]" > spell. As described at > http://mailman.openchange.org/pipermail/devel/2012-March/005461.html, this > does not work. The correct syntax is to specify the array size as below, > where I have changed each affected instance. > > 3. I have removed what I believe are spurious "+1" on the length of > WideCharSubject and WideCharLocation. > > 4. The length of the string in an Exception_Msg is msgLength2, not > msgLength. > > 5. The AppointmentColor in an ExceptionInfo is always present. > > 6. ExceptionInfo also has ReservedBlock1Size, and > ReservedBlock1[ReservedBlock1Size] fields. > > However, I have not been able to fully test all these changes because of > another problem: several fields in ExtendedException and > OldExtendedException are conditional on the OverrideFlags set two structure > levels above. I don't know how to represent that in IDL. > > diff -C5 openchange-1.0-BORG-original/property.idl > openchange-1.0-BORG/property.idl > *** openchange-1.0-BORG-original/property.idl 2012-03-13 > 10:52:50.000000000 +0000 > --- openchange-1.0-BORG/property.idl 2012-03-18 20:14:32.584199226 +0000 > *************** > *** 118,128 **** > FirstDOW_Thursday = 0x4, > FirstDOW_Friday = 0x5, > FirstDOW_Saturday = 0x6 > } FirstDOW; > > ! typedef [v1_enum] enum { > ARO_SUBJECT = 0x0001, > ARO_MEETINGTYPE = 0x0002, > ARO_REMINDERDELTA = 0x0004, > ARO_REMINDER = 0x0008, > ARO_LOCATION = 0x0010, > --- 118,128 ---- > FirstDOW_Thursday = 0x4, > FirstDOW_Friday = 0x5, > FirstDOW_Saturday = 0x6 > } FirstDOW; > > ! typedef [enum16bit] enum { > ARO_SUBJECT = 0x0001, > ARO_MEETINGTYPE = 0x0002, > ARO_REMINDERDELTA = 0x0004, > ARO_REMINDER = 0x0008, > ARO_LOCATION = 0x0010, > *************** > *** 154,173 **** > uint32 EndDate; > } RecurrencePattern; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint32 ReservedBlockEE1Size; > ! [size_is(ReservedBlockEE1Size)] uint8 ReservedBlockEE1[]; > uint32 StartDateTime; > uint32 EndDateTime; > uint32 OriginalStartDate; > uint16 WideCharSubjectLength; > ! [size_is(WideCharSubjectLength+1)] uint16 WideCharSubject[]; > uint16 WideCharLocationLength; > ! [size_is(WideCharLocationLength+1)] uint16 WideCharLocation[]; > uint32 ReservedBlockEE2Size; > ! [size_is(ReservedBlockEE2Size)] uint8 > ReservedBlockEE2[]; > } OldExtendedException; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint32 ChangeHighlightSize; > uint32 ChangeHighlightValue; > --- 154,173 ---- > uint32 EndDate; > } RecurrencePattern; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint32 ReservedBlockEE1Size; > ! uint8 > ReservedBlockEE1[ReservedBlockEE1Size]; > uint32 StartDateTime; > uint32 EndDateTime; > uint32 OriginalStartDate; > uint16 WideCharSubjectLength; > ! uint16 > WideCharSubject[WideCharSubjectLength]; > uint16 WideCharLocationLength; > ! uint16 > WideCharLocation[WideCharLocationLength]; > uint32 ReservedBlockEE2Size; > ! uint8 > ReservedBlockEE2[ReservedBlockEE2Size]; > } OldExtendedException; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint32 ChangeHighlightSize; > uint32 ChangeHighlightValue; > *************** > *** 175,200 **** > } ChangeHighlight; > > typedef [public,flag(NDR_NOALIGN)] struct { > ChangeHighlight ChangeHighlight; > uint32 ReservedBlockEE1Size; > ! [size_is(ReservedBlockEE1Size)] uint8 ReservedBlockEE1[]; > uint32 StartDateTime; > uint32 EndDateTime; > uint32 OriginalStartDate; > uint16 WideCharSubjectLength; > ! [size_is(WideCharSubjectLength+1)] uint16 WideCharSubject[]; > uint16 WideCharLocationLength; > ! [size_is(WideCharLocationLength+1)] uint16 WideCharLocation[]; > uint32 ReservedBlockEE2Size; > ! [size_is(ReservedBlockEE2Size)] uint8 > ReservedBlockEE2[]; > } ExtendedException; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint16 msgLength; > uint16 msgLength2; > ! [size_is(msgLength)] uint8 msg[]; > } Exception_Msg; > > typedef [nodiscriminant, flag(NDR_NOALIGN)] union { > [case(0x0000)] ; > [case(0x0001)] Exception_Msg subjectMsg; > --- 175,200 ---- > } ChangeHighlight; > > typedef [public,flag(NDR_NOALIGN)] struct { > ChangeHighlight ChangeHighlight; > uint32 ReservedBlockEE1Size; > ! uint8 > ReservedBlockEE1[ReservedBlockEE1Size]; > uint32 StartDateTime; > uint32 EndDateTime; > uint32 OriginalStartDate; > uint16 WideCharSubjectLength; > ! uint16 > WideCharSubject[WideCharSubjectLength]; > uint16 WideCharLocationLength; > ! uint16 > WideCharLocation[WideCharLocationLength]; > uint32 ReservedBlockEE2Size; > ! uint8 > ReservedBlockEE2[ReservedBlockEE2Size]; > } ExtendedException; > > typedef [public,flag(NDR_NOALIGN)] struct { > uint16 msgLength; > uint16 msgLength2; > ! uint8 msg[msgLength2]; > } Exception_Msg; > > typedef [nodiscriminant, flag(NDR_NOALIGN)] union { > [case(0x0000)] ; > [case(0x0001)] Exception_Msg subjectMsg; > *************** > *** 220,230 **** > [switch_is(OverrideFlags & 0x0008)] Exception_Value > ReminderSet; > [switch_is(OverrideFlags & 0x0010)] Exception_Value > Location; > [switch_is(OverrideFlags & 0x0020)] Exception_Value > BusyStatus; > [switch_is(OverrideFlags & 0x0040)] Exception_Value > Attachment; > [switch_is(OverrideFlags & 0x0080)] Exception_Value > SubType; > ! [switch_is(OverrideFlags & 0x0100)] Exception_Value > AppointmentColor; > } ExceptionInfo; > > typedef [nodiscriminant,flag(NDR_NOALIGN)] union { > [case(0x3008)] OldExtendedException OldExtendedException; > [default] ExtendedException ExtendedException; > --- 220,232 ---- > [switch_is(OverrideFlags & 0x0008)] Exception_Value > ReminderSet; > [switch_is(OverrideFlags & 0x0010)] Exception_Value > Location; > [switch_is(OverrideFlags & 0x0020)] Exception_Value > BusyStatus; > [switch_is(OverrideFlags & 0x0040)] Exception_Value > Attachment; > [switch_is(OverrideFlags & 0x0080)] Exception_Value > SubType; > ! uint32 AppointmentColor; > ! uint32 ReservedBlock1Size; > ! uint8 > ReservedBlock1[ReservedBlock1Size]; > } ExceptionInfo; > > typedef [nodiscriminant,flag(NDR_NOALIGN)] union { > [case(0x3008)] OldExtendedException OldExtendedException; > [default] ExtendedException ExtendedException; > > ________________________________ > > You have received this notification because you have either subscribed to > it, or are involved in it. > To change your notification preferences, please click here: > http://tracker.openchange.org/my/account _______________________________________________ devel mailing list devel@lists.openchange.org http://mailman.openchange.org/listinfo/devel