Checkout
Ruediger Pluem
committed
on 02 Jul
Merge r1842010, r1841225, r1862039, r1862040, r1862042 from trunk:

* dav_stream_response processes data that has been allocated from the pr… Show more
Merge r1842010, r1841225, r1862039, r1862040, r1862042 from trunk:

* dav_stream_response processes data that has been allocated from the propdb

 pool. Hence close the propdb *after* dav_stream_response which clears thei

 probdb pool.

* Doing a PROPFIND on a large collection e.g. 50.000 elements can easily

 consume 1 GB of memory as the subrequests and propdb pools are not

 destroyed and cleared after each element was handled.

 Do this now. There is one case in dav_get_props where elem->priv

 lives longer then the propdb pool. In this case allocate from r->pool.

 Furthermore also recycle propdb's which allows to clear the propdb's

 pools instead of destroying them and creating them again.

Simplify handling of short-lived pool for dav_propdb in mod_dav.  No

functional change.

* modules/dav/main/props.c (dav_popen_propdb): Rename from

 dav_open_propdb, take a pool argument.

 (dav_open_propdb): Reimplement in terms of above, using

 r->pool.

 (dav_propfind_walker): Switch to using dav_open_propdb

 with scratchpool.

* modules/dav/main/props.c (dav_do_prop_subreq): Allocate escaped URI

 out of propdb pool, fixing small per-resource leak during a PROPFIND

 walk.

Submitted by: jorton, rpluem

* modules/dav/main/mod_dav.c (dav_send_multistatus): Tag the pool.

Reviewed by: rpluem, jorton, jim

Show less