Package: libmapi0
Version: 1:1.0-2
Severity: normal
Tags: upstream patch

Hi,

a change in samba4 causes evolution-mapi to fail on sending mail, except
for very small mails, or creating new appointments.

There is a workaround for openchange that consists of a patch for
exchange.idl.
It is attached. I rebuilt the openchange package with this fix and it
fixes
my Evolution issue.

This is the upstream bug:

https://bugzilla.gnome.org/show_bug.cgi?id=682449

Regards,
Tino
-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libmapi0 depends on:
ii  libc6                  2.13-35
ii  libdcerpc0             4.0.0~beta2+dfsg1-3
ii  libldb1                1:1.1.6-1
ii  libndr0                4.0.0~beta2+dfsg1-3
ii  libsamba-credentials0  4.0.0~beta2+dfsg1-3
ii  libsamba-hostconfig0   4.0.0~beta2+dfsg1-3
ii  libsamba-util0         4.0.0~beta2+dfsg1-3
ii  libtalloc2             2.0.7+git20120207-1
ii  libtevent0             0.9.16-1
ii  multiarch-support      2.13-35

libmapi0 recommends no packages.

libmapi0 suggests no packages.

-- no debconf information


Author: Jelmer Vernooij <jel...@openchange.org>
Status: cherry-picked from upstream
Description: Fix symbolic link creation for shared libaries (which have a 
somewhat inconsistent soversion)

=== modified file 'exchange.idl'
Index: exchange.idl
===================================================================
--- old/exchange.idl    (revision 4004)
+++ new/exchange.idl    (working copy)
@@ -1039,7 +1039,7 @@
                [case(ActionType_OP_COPY)]              MoveCopy_Action         
        CopyAction;
                [case(ActionType_OP_REPLY)]             ReplyOOF_Action         
        ReplyAction;
                [case(ActionType_OP_OOF_REPLY)]         ReplyOOF_Action         
        ReplyOOFAction;
-               [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] 
DATA_BLOB       DeferAction;
+               
[case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB   
DeferAction;
                [case(ActionType_OP_BOUNCE)]            BounceCode              
        BounceCode;
                [case(ActionType_OP_TAG)]               mapi_SPropValue_wrap    
        PropValue;
                [case(ActionType_OP_FORWARD)]           ForwardDelegate_Action  
        ForwardAction;
@@ -1057,7 +1057,7 @@
 
        typedef [flag(NDR_NOALIGN)] struct {
                uint16                                  ActionLength;
-               
[subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] 
ActionBlockData ActionBlockData;
+               
[subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING|NDR_NOALIGN)] 
ActionBlockData ActionBlockData;
        } ActionBlock;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -1095,7 +1095,7 @@
 
        typedef [public,flag(NDR_NOALIGN)] struct {
                uint16                                  cValues;
-               [flag(NDR_REMAINING)]mapi_SPropValue    lpProps[cValues];
+               [flag(NDR_REMAINING|NDR_NOALIGN)]mapi_SPropValue        
lpProps[cValues];
        } mapi_SPropValue_array;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -1281,7 +1281,7 @@
 // TODO: figure out if "layout" can go
                uint8                                                           
        layout;
 // TODO: convert this to a proper structure - see if we already have one.
-               [flag(NDR_REMAINING)] DATA_BLOB                                 
        prop_values;
+               [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB                     
                        prop_values;
        } RecipientRow;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -1356,7 +1356,7 @@
 
        typedef [flag(NDR_NOALIGN)] struct {
                uint8           layout;
-               [flag(NDR_REMAINING)] DATA_BLOB prop_data;
+               [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_data;
        } GetProps_repl;
 
        /*************************/
@@ -1455,7 +1455,7 @@
        typedef [flag(NDR_NOALIGN)]struct {
                uint32          idx;
                ulRecipClass    RecipClass;             
-               [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow;
+               [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] RecipientRow 
RecipientRow;
        } ModifyRecipientRow;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -1532,7 +1532,7 @@
                uint8                           handle_idx;
                MSGFLAG_READ                    flags;
                /* TEMP HACK for editing notes without crashing Outlook:
-                  [flag(NDR_REMAINING)] DATA_BLOB      clientdata; */
+                  [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB  clientdata; */
        } SetMessageReadFlag_req;
 
        typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
@@ -1782,7 +1782,7 @@
        typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
                uint8           Origin;
                uint16          RowCount;
-               [flag(NDR_REMAINING)]DATA_BLOB  RowData;
+               [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB      RowData;
        } QueryRows_repl;
 
        /**************************/
@@ -2394,13 +2394,13 @@
        } ReadStream_req;
 
        typedef [flag(NDR_NOALIGN)] struct {
-               [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
+               [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data;
        } ReadStream_repl;
 
        /*************************/
        /* EcDoRpc Function 0x2d */
        typedef [flag(NDR_NOALIGN)] struct {
-               [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB  data;
+               [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB      
data;
        } WriteStream_req;
 
 
@@ -2900,7 +2900,7 @@
                uint16          TotalStepCount;
                uint8           Reserved;
                uint16          TransferBufferSize;
-               
[subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] 
DATA_BLOB TransferBuffer;
+               
[subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)]
 DATA_BLOB TransferBuffer;
        } FastTransferSourceGetBuffer_repl;
 
        /**************************/
@@ -2982,7 +2982,7 @@
        /* EcDoRpc Function 0x54  */
        typedef [flag(NDR_NOALIGN)] struct {
                uint16          TransferBufferSize;
-               
[subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] 
DATA_BLOB TransferBuffer;
+               
[subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)]
 DATA_BLOB TransferBuffer;
        } FastTransferDestinationPutBuffer_req;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -3075,7 +3075,7 @@
        typedef [flag(NDR_NOALIGN)] struct {
                uint32          ExpandedRowCount;
                uint16          RowCount;
-               [flag(NDR_REMAINING)]DATA_BLOB  RowData;
+               [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB  RowData;
        } ExpandRow_repl;
 
        /*************************/
@@ -3184,7 +3184,7 @@
        typedef [flag(NDR_NOALIGN)] struct {
                boolean8        HasFinished;
                uint16          DataSize;
-               [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] 
DATA_BLOB Data;
+               [subcontext(0), subcontext_size(DataSize), 
flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data;
        } ReadPerUserInformation_repl;
 
        /*************************/
@@ -3194,7 +3194,7 @@
                boolean8        HasFinished;
                uint32          DataOffset;
                uint16          DataSize;
-               [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] 
DATA_BLOB Data;
+               [subcontext(0), subcontext_size(DataSize), 
flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data;
                GUID            ReplGuid;       /* Note: ReplGuid gets only 
included under specific circumstances */
        } WritePerUserInformation_req;
 
@@ -3364,7 +3364,7 @@
                SendOptions                             SendOptions;
                SynchronizationFlag                     SynchronizationFlag;
                uint16                                  RestrictionSize;
-               
[subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB  
RestrictionData;
+               
[subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING|NDR_NOALIGN)]
 DATA_BLOB      RestrictionData;
                SynchronizationExtraFlags               
SynchronizationExtraFlags;
                mapi_SPropTagArray                      PropertyTags;
        } SyncConfigure_req;
@@ -3542,7 +3542,7 @@
        } MessageReadState;
 
        typedef [flag(NDR_NOALIGN)] struct {
-               [subcontext(2),flag(NDR_REMAINING)] DATA_BLOB MessageReadStates;
+               [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB 
MessageReadStates;
        } SyncImportReadStateChanges_req;
 
        typedef [flag(NDR_NOALIGN)] struct {
@@ -3617,7 +3617,7 @@
        /*************************/
        /* EcDoRpc Function 0x90 */
        typedef [flag(NDR_NOALIGN)] struct {
-               [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB  data;
+               [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB      
data;
        } WriteAndCommitStream_req;
 
 
@@ -4462,7 +4462,7 @@
                uint32          MajorVersion;
                uint32          MinorVersion;
                uint32          BuildNumber;
-               [subcontext(0), subcontext_size(132), 
flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1;
+               [subcontext(0), subcontext_size(132), 
flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Reserved_1;
                uint16          ServicePackMajor;
                uint16          ServicePackMinor;
                uint32          Reserved_2;
@@ -4567,7 +4567,7 @@
                [out]                           uint16                          
        rgwServerVersion[3],
                [out]                           uint16                          
        rgwBestVersion[3],
                [in,out]                        uint32                          
        *pulTimeStamp,
-               [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] 
mapi2k7_AuxInfo      *rgbAuxIn,
+               [in,subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] 
mapi2k7_AuxInfo      *rgbAuxIn,
                [in]                            uint32                          
        cbAuxIn,
                [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] 
mapi2k7_AuxInfo       *rgbAuxOut,
                [in,out][range(0,0x1008)]       uint32                          
        *pcbAuxOut
@@ -4588,7 +4588,7 @@
 
        typedef [public,nopull] struct {
                RPC_HEADER_EXT                                                  
header;
-               [subcontext(0),flag(NDR_NOALIGN|NDR_REMAINING)] mapi_response   
*mapi_response;
+               [subcontext(0),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response   
*mapi_response;
        } mapi2k7_response;
 
        [public,noprint] MAPISTATUS EcDoRpcExt2(

Reply via email to