julien, thanks for the response and sorry for the delay in replying.  As and
when I can, I will send you any idl diffs I have.

best regards,

krishna

On Wed, Jan 6, 2010 at 12:24 PM, Julien Kerihuel
<[email protected]>wrote:

> Hi Krishna,
>
> It's nice to hear back from you.
>
> On Wed, 2010-01-06 at 09:24 -0800, Krishna Ganugapati wrote:
> > Hello Julien and Openchange folks
> >
> > Over the last couple of weekends, I've been experimenting with the
> > openchange emsmdb.idl file and seeing if it could be adapted to be
> > used by the dcerpc compiler. I've noticed this particular anomaly in
> > the  mapi_requst structure.
> >
> > The last field in the mapi_request is a pointer to a handle array -
> > int *handles.  This is usually variable length - some calls take two
> > handles and some take just one handle. In dce/rpc, this would need to
> > be specified apriori with an attribute size_is(count) - where some
> > previous variable provides the number of handles to marshall.
> >
> > But the specification has no such field.  So I hardcoded it to always
> > accept 2 handles.
>
> Actually the handles array can be more than 2 handles (and is generally
> the case). The IDL just describes a convenient packing structure we next
> marshall/unmarshall manually in ndr_mapi.c.
>
> To make it simple:
> 1. We have the EcDoRpc packet with a 4 prefixing bytes (the subcontext)
> specifying the overall size of the mapi_request (or response - depending
> on IO) structure.
>
> 2. The mapi_request structure is made of a non-aligned array of
> EcDoRpc_MAPI_REQ (or EcDoRpc_MAPI_REPL if we discuss responses) - just
> dumped one after the other - each entry representing a MAPI call with
> its specific size (variable).
>
> 3. Finally we have the handles array which offset is length +
> sizeof(mapi_length) and which size is mapi_length - length.
>
> The array of handles is varying and given there is no NDR encoding
> there, we have no prefixing field we can use to standardize this part of
> the IDL.
>
> I think the schema available on slide 29/36 in
>
> http://www.openchange.org/images/openchange/conferences/download/openchange_courses_001_understanding_mapi.pdfshould
>  make things more understandable.
>
> >
> > Also, I was curious to know if there is any interest in reconciling
> > these changes. pidl has very different syntax than standard dce/rpc
> > idl...
>
> If there is any way to conceal both implementation within the same IDL,
> I'd be happy to merge it into trunk.
> >
> > Glad for any clarification here?
>
> Sure, please proceed. I think this is a very worthwhile discussion that can
> probably lead into interesting results.
>
> Cheers,
> Julien.
>
> --
> Julien Kerihuel
> [email protected]
> OpenChange Project Manager
>
> GPG Fingerprint: 0B55 783D A781 6329 108A  B609 7EF6 FE11 A35F 1F79
>
>
> _______________________________________________
> devel mailing list
> [email protected]
> http://mailman.openchange.org/listinfo/devel
>
>
_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel

Reply via email to