On Mon, Feb 19, 2018 at 08:38:05PM +0100, Ruediger Pluem wrote:
> On 02/19/2018 07:50 PM, Joe Orton wrote:
> > On Sat, Feb 17, 2018 at 02:06:20PM -0000, [email protected] wrote:
> >> Author: minfrin
> >> Date: Sat Feb 17 14:06:20 2018
> >> New Revision: 1824592
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1824592&view=rev
> >> Log:
> >> Update proposal with fix for rpluem/jorton.
> >
> > Extending dav_resource still breaks binary backards compat with all(?)
> > consumers of this API, or am I missing something here?
>
> I don't think so. Modules that just work with pointers to structs created by
> mod_dav shouldn't
> have any issues, but see below.
Looking again, I think the way the mod_dav API is designed does make it
necessary for consumers of the API to allocate dav_resource structures.
There are a number of hooks like ->get_resource():
dav_error * (*get_resource)(
request_rec *r,
const char *root_dir,
const char *label,
int use_checked_in,
dav_resource **resource
);
... which are implemented in repos providers which must allocate that
*resource, and hence changing sizeof(dav_resource) will break binary BC,
even if the structure was not embedded anywhere.
> > Look at what mod_dav_svn does with the struct for an example:
> > https://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/repos.c?view=markup#l80
>
> I guess this gets us back to this _copy / _sizeof discussion we had in
> another thread recently.
> Creating structures / allocating memory for them in modules is IMHO a recipe
> to fail with our current
> backporting policy as we allow to extend structures at the end.
Yup.
In this case would moving ->acls and ->ctx to a pool note of the ->pool
field (actually is ->ctx actually used??) might work to preserve BC?
Regards, Joe