Checkout Tools
  • last updated 5 hours ago
Constraints: committers
Constraints: files
Constraints: dates
* module/dav/main/util.c (dav_check_bufsize): Don't call

memcpy(,NULL,0) if the buffer is uninitialized, to avoid tripping

UBSan. (Unclear if this is valid for this API.)

Fix spelling errors found by codespell. [skip ci]

  1. … 98 more files in changeset.
PR62989: DOCTYPE tags in server-generated HTML.

Submitted By: Andra Farkas <deepbluemistake>, Giovanni Bechis <giovanni>

  1. … 11 more files in changeset.
* Replace apr_psprintf with apr_pstrcat where the format strings only

contain %s to improve efficiency. Leave out error messages as they

are not on a crtical code path and error message become less readable

when taking out the format specifiers.

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

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

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


Submitted by: jorton, rpluem

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


(dav_propfind_walker): Switch to using dav_open_propdb

with scratchpool.

Fix use of StateDir directive after r1852982:

* server/core.c (reset_config): Rename from reset_config_defines;

tie core_state_dir to pconf lifetime in this cleanup.

(core_pre_config): Adjust accordingly.

* modules/md/mod_md_config.c (md_config_post_config): Pick up base_dir

from statedir in post-config phase so StateDir can influence it.

* modules/dav/fs/mod_dav_fs.c (dav_fs_create_server_config): Don't

init lockdb_path here. (dav_fs_post_config): New function; set

lockdb_path based on configured statedir.

  1. … 2 more files in changeset.
* modules/dav/main/mod_dav.c (dav_method_propfind): Tag the scratchpool.

* modules/dav/fs/mod_dav_fs.c (dav_fs_create_server_config): Use

statedir-relative default lock database path.

* 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.

Save a few cycles.

There is no need to check the first bytes, they are known to be "bytes ".

Wire through the log message number.

  1. … 1 more file in changeset.
Make sure ACL API support in mod_dav is not dependent on the presence

or absence of apr-util v1.6. Log a message to note that ACL support

is disabled with apr-util <= 1.5.

Follow up to r1739201.

These APR_TIMEUP special cases are now handled by ap_map_http_request_error().

  1. … 2 more files in changeset.
mod_dav: Note an API issue with the dav_hooks_repository.deliver(),

dav_hooks_vsn.deliver_report() and dav_hooks_vsn.merge() hook


* modules/dav/main/mod_dav.h

(dav_hooks_repository.deliver, dav_hooks_vsn.deliver_report,

dav_hooks_vsn.merge): Add notes about the API issue.

mod_dav: Fix a potential cause of unbounded memory usage or incorrect

behavior in a routine that sends <DAV:response>'s to the output filters.

The dav_send_one_response() function accepts the current head of the output

filter list as an argument, but the actual head can change between calls to

ap_pass_brigade(). This can happen with self-removing filters, e.g., with

the filter from mod_headers or mod_deflate. Consequently, executing an

already removed filter can either cause unwanted memory usage or incorrect


This patch changes the signature of the existing mod_dav's public API,

dav_send_one_response(), because this API is not yet a part of any 2.4.x


* modules/dav/main/mod_dav.c

(dav_send_one_response): Accept a request_rec instead of an ap_filter_t.

Write the response to r->output_filters.

(dav_send_multistatus, dav_stream_response): Update these calling sites

of dav_send_one_response().

* modules/dav/main/mod_dav.h

(dav_send_one_response): Adjust definition.

Fix bogus K&R declarations
mod_dav: follow up to r1746207: fix typo (missing '/') for closing tag.

Fix spelling in comments and text files.

No functional change.

PR 59990

  1. … 68 more files in changeset.
* Fix compilation error introduced in r1748322 by double typedef
Allow other modules to become providers and add ACLs

to the DAV response. Requires apr-util v1.6+.

  1. … 2 more files in changeset.
mod_dav: making mod_dav.h compile with clang again
mod_dav: Add dav_begin_multistatus, dav_send_one_response,

dav_finish_multistatus, dav_send_multistatus, dav_handle_err,

dav_failed_proppatch, dav_success_proppatch to mod_dav.h.

  1. … 2 more files in changeset.
mod_dav: Add dav_get_provider_name() function to obtain the name

of the provider from mod_dav.

  1. … 2 more files in changeset.
Rename ap_casecmpstr[n]() to ap_cstr_casecmp[n](), update with APR doxygen
  1. … 48 more files in changeset.
mod_dav: Add support for childtags to dav_error.

  1. … 2 more files in changeset.
Added many log numbers to log statements that

had none.

Those were not detected by the coccinelle script.

  1. … 34 more files in changeset.
Follow up to r1715880: revert abusive ap_casecmpstr[n]() usages.

  1. … 7 more files in changeset.