]> git.ipfire.org Git - thirdparty/apache/httpd.git/commit
Merge r1842010, r1841225, r1862039, r1862040, r1862042 from trunk:
authorRuediger Pluem <rpluem@apache.org>
Tue, 2 Jul 2019 09:08:30 +0000 (09:08 +0000)
committerRuediger Pluem <rpluem@apache.org>
Tue, 2 Jul 2019 09:08:30 +0000 (09:08 +0000)
commitaec9f4a5dd80da7d58cca5ebfd1da4af39e4d7c2
tree876608dcbef11865b7bf56c3e287e6acc65e673e
parenta5fe4c18429de838183259985a7c40b4f3a32239
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

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1862410 13f79535-47bb-0310-9956-ffa450edef68
CHANGES
STATUS
include/ap_mmn.h
modules/dav/main/mod_dav.c
modules/dav/main/mod_dav.h
modules/dav/main/props.c