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

Reply via email to