]> git.ipfire.org Git - thirdparty/apache/httpd.git/log
thirdparty/apache/httpd.git
5 years agoExtend method_precondition hook to be called during the PROPFIND
Graham Leggett [Sun, 5 Jul 2020 11:52:06 +0000 (11:52 +0000)] 
Extend method_precondition hook to be called during the PROPFIND
and LABEL walkers, once for each walked resource.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879522 13f79535-47bb-0310-9956-ffa450edef68

5 years agofr doc rebuild.
Lucien Gentis [Sat, 4 Jul 2020 14:28:02 +0000 (14:28 +0000)] 
fr doc rebuild.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879504 13f79535-47bb-0310-9956-ffa450edef68

5 years agofr doc xml files updates.
Lucien Gentis [Sat, 4 Jul 2020 14:25:36 +0000 (14:25 +0000)] 
fr doc xml files updates.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879503 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBump log numbers.
Graham Leggett [Fri, 3 Jul 2020 19:52:29 +0000 (19:52 +0000)] 
Bump log numbers.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879489 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd MMAP support to ETag generation.
Graham Leggett [Fri, 3 Jul 2020 19:48:53 +0000 (19:48 +0000)] 
Add MMAP support to ETag generation.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879488 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBump MMN correctly.
Graham Leggett [Fri, 3 Jul 2020 14:49:21 +0000 (14:49 +0000)] 
Bump MMN correctly.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879479 13f79535-47bb-0310-9956-ffa450edef68

5 years agocore: Remove support for the Content-MD5 header, removed in RFC7231.
Graham Leggett [Fri, 3 Jul 2020 12:44:53 +0000 (12:44 +0000)] 
core: Remove support for the Content-MD5 header, removed in RFC7231.
Functions ap_md5digest() and ap_md5contextTo64() removed, and
ContentDigest directive.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879472 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd skeleton for new features docs for 2.6.
Graham Leggett [Fri, 3 Jul 2020 12:29:55 +0000 (12:29 +0000)] 
Add skeleton for new features docs for 2.6.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879471 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd log numbers to util_etag.c.
Graham Leggett [Fri, 3 Jul 2020 11:19:10 +0000 (11:19 +0000)] 
Add log numbers to util_etag.c.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879470 13f79535-47bb-0310-9956-ffa450edef68

5 years agoSeek to the start of the file when calculating the ETag.
Graham Leggett [Fri, 3 Jul 2020 09:11:42 +0000 (09:11 +0000)] 
Seek to the start of the file when calculating the ETag.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879469 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_dav: Allow other DAV modules to use dav_get_resource().
Graham Leggett [Fri, 3 Jul 2020 08:29:56 +0000 (08:29 +0000)] 
mod_dav: Allow other DAV modules to use dav_get_resource().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879466 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBe defensive when calculating the digest. Make sure the offset is initialised
Graham Leggett [Fri, 3 Jul 2020 08:21:13 +0000 (08:21 +0000)] 
Be defensive when calculating the digest. Make sure the offset is initialised
to zero before reading the current offset.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879465 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879449: yet better MPM poll callback API.
Yann Ylavic [Thu, 2 Jul 2020 15:49:53 +0000 (15:49 +0000)] 
Follow up to r1879449: yet better MPM poll callback API.

Let pass a const pfds to the MPM, for it to make a copy on the given pool
as needed.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879451 13f79535-47bb-0310-9956-ffa450edef68

5 years agompm_common: add pool argument to mpm_register_poll_callback[_timeout] hooks.
Yann Ylavic [Thu, 2 Jul 2020 15:06:23 +0000 (15:06 +0000)] 
mpm_common: add pool argument to mpm_register_poll_callback[_timeout] hooks.

This is cleaner API than using pfds->pool implicitely.

MAJOR bump but reusing the existing hooks (with an API/ABI breakage) because
it's trunk material only.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879449 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdjust for r1879447 to specify shmcb is tested when
Joe Orton [Thu, 2 Jul 2020 14:34:17 +0000 (14:34 +0000)] 
Adjust for r1879447 to specify shmcb is tested when
TEST_SSL_SESSCACHE is defined. [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879448 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* modules/ssl/ssl_scache.c (ssl_scache_init): Use <16 character
Joe Orton [Thu, 2 Jul 2020 14:13:09 +0000 (14:13 +0000)] 
* modules/ssl/ssl_scache.c (ssl_scache_init): Use <16 character
  cname argument for socache ->init() per the API constraint.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879445 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd additional test suite runs for the prefork & event pool-debug builds:
Joe Orton [Thu, 2 Jul 2020 13:31:30 +0000 (13:31 +0000)] 
Add additional test suite runs for the prefork & event pool-debug builds:
- run with SSLSessionCache defined (after r1879430)
- run with "SSLProtocol TLSv1.2"

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879441 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy_wstunnel: follow up to r1879418: handle first async lifetime too.
Yann Ylavic [Thu, 2 Jul 2020 12:22:07 +0000 (12:22 +0000)] 
mod_proxy_wstunnel: follow up to r1879418: handle first async lifetime too.

Create the dedicated pfds and subpool in proxy_wstunnel_request() too, for
the first call to ap_mpm_register_poll_callback_timeout().

While at it, add comments about why we need the dedicated pfds/subpool.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879438 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy_http: follow up to r1879419: clarify poll callback pds/subpool.
Yann Ylavic [Thu, 2 Jul 2020 12:15:57 +0000 (12:15 +0000)] 
mod_proxy_http: follow up to r1879419: clarify poll callback pds/subpool.

Comments about why we need a dedicated pfds and its subpool for
ap_mpm_register_poll_callback_timeout().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879437 13f79535-47bb-0310-9956-ffa450edef68

5 years agompm_common: remove ap_mpm_unregister_poll_callback().
Yann Ylavic [Thu, 2 Jul 2020 00:33:46 +0000 (00:33 +0000)] 
mpm_common: remove ap_mpm_unregister_poll_callback().

It's now called automatically by mpm_event and anyway can't be called safely
outside the MPM code without racing.

MAJOR bump.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879422 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879419: CHANGES entry.
Yann Ylavic [Thu, 2 Jul 2020 00:25:32 +0000 (00:25 +0000)] 
Follow up to r1879419: CHANGES entry.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879421 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy_http: handle async tunneling of Upgrade(d) protocols.
Yann Ylavic [Thu, 2 Jul 2020 00:14:26 +0000 (00:14 +0000)] 
mod_proxy_http: handle async tunneling of Upgrade(d) protocols.

When supported by the MPM (i.e. "event"), provide async callbacks and let
them be scheduled by ap_mpm_register_poll_callback_timeout(), while the
handler returns SUSPENDED.

The new ProxyAsyncDelay directive (if positive) enables async handling,
while ProxyAsyncIdleTimeout determines the timeout applied on both ends
while tunneling.

Github: closes #126

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879419 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy_wstunnel: avoid leaks on tunnel->pfds->pool.
Yann Ylavic [Thu, 2 Jul 2020 00:07:04 +0000 (00:07 +0000)] 
mod_proxy_wstunnel: avoid leaks on tunnel->pfds->pool.

Since event_register_poll_callback_ex() allocates its data on pfds->pool,
we need a subpool to be cleared at each proxy_wstunnel_callback() call.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879418 13f79535-47bb-0310-9956-ffa450edef68

5 years agompm_event: poll callbacks fixes and improvements.
Yann Ylavic [Thu, 2 Jul 2020 00:04:57 +0000 (00:04 +0000)] 
mpm_event: poll callbacks fixes and improvements.

server/mpm_fdqueue.h;
    Rename "remove" field to "pfds" in timer_event_t.

server/mpm/event/event.c:
    update_reqevents_from_sense():
        New helper to update pfd->reqevents according to the given cs->sense
        for CONN_STATE_WRITE_COMPLETION, reusable in process_socket() and
        event_resume_suspended().

    event_resume_suspended():
        Process lingering close if given cs->state = CONN_STATE_LINGER.
        Call notify_suspend() before entering CONN_STATE_WRITE_COMPLETION.

    event_register_poll_callback_ex():
        Don't poll pfds with reqevents == 0.

    listener_thread():
        Run event_cleanup_poll_callback to both remove the registered pfds
        and leave pfds->pool in a consistent state.
        Process users callabacks after all PT_USER batons have been collected
        in the result pfds loop, otherwise we might race with the callbacks
        within the loop if multiple events/sockets concern the same baton, and
        crash if pfds->pool is cleared.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879417 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_ssl: release coalesced data when called from ap_filter_output_pending().
Yann Ylavic [Wed, 1 Jul 2020 23:16:04 +0000 (23:16 +0000)] 
mod_ssl: release coalesced data when called from ap_filter_output_pending().

The purpose of ap_filter_output_pending() is to flush pending data, so
ssl_io_filter_coalesce() should honor that.

This allows mod_proxy to not care about mod_ssl coalescing filters when
tunneling between connections.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879416 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy: reindent ap_proxy_transfer_between_connections() after r1879401.
Yann Ylavic [Wed, 1 Jul 2020 16:44:15 +0000 (16:44 +0000)] 
mod_proxy: reindent ap_proxy_transfer_between_connections() after r1879401.

No functional change.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879402 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy: improved and reentrant tunneling loop.
Yann Ylavic [Wed, 1 Jul 2020 16:35:48 +0000 (16:35 +0000)] 
mod_proxy: improved and reentrant tunneling loop.

modules/proxy/mod_proxy.h:
    Rename AP_PROXY_TRANSFER_SHOULD_YIELD to AP_PROXY_TRANSFER_YIELD_PENDING
    and add AP_PROXY_TRANSFER_YIELD_MAX_READS.

modules/proxy/mod_proxy_http.c:
modules/proxy/mod_proxy_wstunnel.c:
    Removing of reqtimeout filter is now handled by ap_proxy_tunnel_create().

modules/proxy/proxy_util.c:
    ap_proxy_transfer_between_connections():
        Reorganize loop to break out early.
        When AP_PROXY_TRANSFER_YIELD_PENDING, if !ap_filter_should_yield() we
        still need to run and check ap_filter_output_pending() since it may
        release pending data.
        When AP_PROXY_TRANSFER_YIELD_MAX_READS, stop the loop after too much
        reads (PROXY_TRANSFER_MAX_READS = 10000) to release the thread and
        give the caller a chance to schedule the other direction.
        Don't return APR_INCOMPLETE when it comes from an incomplete body
        detected by ap_http_filter().

    ap_proxy_tunnel_create():
        Start with POLLOUT on both directions so that any pending output data
        is flushed first.

    ap_proxy_tunnel_run():
        Remove re-init/clear of the pollset for each call so that the function
        is reentrant.
        Handle POLLOUT before POLLIN so that we can read in the same pass once
        all buffered output data are flushed, using ap_filter_input_pending()
        to drain buffered input data.

This is preparatory patch for async websocket tunneling is mod_proxy_http.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879401 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Improve formating and aligning [skip ci]
Ruediger Pluem [Tue, 30 Jun 2020 20:23:52 +0000 (20:23 +0000)] 
* Improve formating and aligning [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879384 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Use isValidAddress when dumping buckets [skip ci]
Ruediger Pluem [Tue, 30 Jun 2020 20:16:19 +0000 (20:16 +0000)] 
* Use isValidAddress when dumping buckets [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879383 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Create helper function isValidAddress to determine if an address is valid [skip ci]
Ruediger Pluem [Tue, 30 Jun 2020 20:14:36 +0000 (20:14 +0000)] 
* Create helper function isValidAddress to determine if an address is valid [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879382 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Let dump_brigade print the length of the brigade
Ruediger Pluem [Tue, 30 Jun 2020 19:34:10 +0000 (19:34 +0000)] 
* Let dump_brigade print the length of the brigade

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879381 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1877955: don't reuse the connection for mixed C-L / T-E requests
Yann Ylavic [Tue, 30 Jun 2020 16:05:56 +0000 (16:05 +0000)] 
Follow up to r1877955: don't reuse the connection for mixed C-L / T-E requests

Disable keepalive on the connection if we received both Content-Length and
chunked Transfer-Encoding in the request, to avoid confusion with front
intermediaries and potential further request/response splitting.

This is what we do already for mod_proxy backend connections in the same case.

While at it, replace draft httpbis links with final RFC7230's.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879373 13f79535-47bb-0310-9956-ffa450edef68

5 years agoTravis changes:
Joe Orton [Tue, 30 Jun 2020 14:24:43 +0000 (14:24 +0000)] 
Travis changes:
a) add job to check for empty APLOGNO() macros
b) don't install CPAN stuff if SKIP_TESTING is set
c) don't tail the error_log on test suite failure since it's almost
   always irrelevant shutdown stuff and obscures the actual failures
d) use coloured grep output when showing segfaults to make them obvious in the
   travis error_log output.
   e.g. https://travis-ci.org/github/apache/httpd/jobs/703517978#L2537

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879370 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1877955: always validate the Content-Length
Yann Ylavic [Tue, 30 Jun 2020 14:18:22 +0000 (14:18 +0000)] 
Follow up to r1877955: always validate the Content-Length

even if it is to be ignored because of RFC7230 section 3.3.3 requirements.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879369 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd Travis jobs to test shared-MPMs under APR pool-debug with both event and prefork.
Joe Orton [Tue, 30 Jun 2020 13:26:59 +0000 (13:26 +0000)] 
Add Travis jobs to test shared-MPMs under APR pool-debug with both event and prefork.

Github: closes #111

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879368 13f79535-47bb-0310-9956-ffa450edef68

5 years agoRevert r1879361: 2.4.x material only.
Yann Ylavic [Tue, 30 Jun 2020 12:29:06 +0000 (12:29 +0000)] 
Revert r1879361: 2.4.x material only.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879363 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy: unfail mixed ProxyPass/<Proxy> and ProxyPassMatch/<ProxyMatch>.
Yann Ylavic [Tue, 30 Jun 2020 12:15:41 +0000 (12:15 +0000)] 
mod_proxy: unfail mixed ProxyPass/<Proxy> and ProxyPassMatch/<ProxyMatch>.

It is not a failure in current 2.4.x, so to ease backport and to avoid compat
breakage simply warn about the second directive being ignored.

This commit can be reverted in trunk if we want next versions to fail in this
case.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879361 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879235: fill APLOGNO().
Yann Ylavic [Tue, 30 Jun 2020 11:59:44 +0000 (11:59 +0000)] 
Follow up to r1879235: fill APLOGNO().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879360 13f79535-47bb-0310-9956-ffa450edef68

5 years agoserver/util_script.c: reserve one APLOGNO number after r1879253
Luca Toscano [Mon, 29 Jun 2020 19:29:47 +0000 (19:29 +0000)] 
server/util_script.c: reserve one APLOGNO number after r1879253

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879348 13f79535-47bb-0310-9956-ffa450edef68

5 years agoUse a dedicated constant for the base64 sha1 length.
Graham Leggett [Mon, 29 Jun 2020 17:45:35 +0000 (17:45 +0000)] 
Use a dedicated constant for the base64 sha1 length.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879346 13f79535-47bb-0310-9956-ffa450edef68

5 years agoRemove tabs.
Graham Leggett [Mon, 29 Jun 2020 17:43:09 +0000 (17:43 +0000)] 
Remove tabs.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879345 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBegone foul tabs.
Graham Leggett [Mon, 29 Jun 2020 16:29:58 +0000 (16:29 +0000)] 
Begone foul tabs.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879340 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_dav: Add method_precondition hook. WebDAV extensions define
Graham Leggett [Mon, 29 Jun 2020 16:21:52 +0000 (16:21 +0000)] 
mod_dav: Add method_precondition hook. WebDAV extensions define
conditions that must exist before a WebDAV method can be executed.
This hook allows a WebDAV extension to verify these preconditions.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879339 13f79535-47bb-0310-9956-ffa450edef68

5 years agoMake sure the get and restore the file offset when conputing the ETag. Be defensive
Graham Leggett [Mon, 29 Jun 2020 14:08:01 +0000 (14:08 +0000)] 
Make sure the get and restore the file offset when conputing the ETag. Be defensive
when opening the file.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879332 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBe defensive when the request is missing.
Graham Leggett [Mon, 29 Jun 2020 09:33:12 +0000 (09:33 +0000)] 
Be defensive when the request is missing.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879322 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd implementation of deliver_report and gather_reports to mod_dav.c.
Graham Leggett [Sun, 28 Jun 2020 13:28:19 +0000 (13:28 +0000)] 
Add implementation of deliver_report and gather_reports to mod_dav.c.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879307 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd hooks deliver_report and gather_reports to mod_dav.h. Allows other
Graham Leggett [Sun, 28 Jun 2020 13:17:26 +0000 (13:17 +0000)] 
Add hooks deliver_report and gather_reports to mod_dav.h. Allows other
modules apart from versioning implementations to handle the REPORT method.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879306 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd dav_get_provider(), dav_open_lockdb() and dav_close_lockdb() mod_dav.h.
Graham Leggett [Sun, 28 Jun 2020 12:40:56 +0000 (12:40 +0000)] 
Add dav_get_provider(), dav_open_lockdb() and dav_close_lockdb() mod_dav.h.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879305 13f79535-47bb-0310-9956-ffa450edef68

5 years ago"[mod_dav_fs etag handling] should really honor the FileETag setting".
Graham Leggett [Sat, 27 Jun 2020 23:41:00 +0000 (23:41 +0000)] 
"[mod_dav_fs etag handling] should really honor the FileETag setting".
- It now does.
- Add "Digest" to FileETag directive, allowing a strong ETag to be
  generated using a file digest.
- Add ap_make_etag_ex() and ap_set_etag_fd() to allow full control over
  ETag generation.
- Add concept of "binary notes" to request_rec, allowing packed bit flags
  to be added to a request.
- First binary note - AP_REQUEST_STRONG_ETAG - allows modules to force
  the ETag to a strong ETag to comply with RFC requirements, such as those
  mandated by various WebDAV extensions.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879285 13f79535-47bb-0310-9956-ffa450edef68

5 years agoserver/util_script.c: tune logging Last-Modified header
Luca Toscano [Sat, 27 Jun 2020 09:11:32 +0000 (09:11 +0000)] 
server/util_script.c: tune logging Last-Modified header

Follow up after Joe's feedback in STATUS:
  - If APR_DATE_BAD is returned for Last-Modified, log it at INFO level
    (as opposed to trace).
  - Remove unnecessary guard for APLOGrtrace1(r).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879253 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879080 and r1879137: servlet-normalize r->uri if matched.
Yann Ylavic [Fri, 26 Jun 2020 12:51:08 +0000 (12:51 +0000)] 
Follow up to r1879080 and r1879137: servlet-normalize r->uri if matched.

If a ProxyPass mapping=servlet matches (in pre_trans hook), update r->uri with
the servlet normalization so that later <Location> or any dir context match
does not have to handle potential path parameters.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879235 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd a plain mod_cgid build, explicitly without mod_cgi.
Joe Orton [Thu, 25 Jun 2020 12:32:30 +0000 (12:32 +0000)] 
Add a plain mod_cgid build, explicitly without mod_cgi.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879184 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879179: CHANGES entry.
Yann Ylavic [Thu, 25 Jun 2020 11:21:37 +0000 (11:21 +0000)] 
Follow up to r1879179: CHANGES entry.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879180 13f79535-47bb-0310-9956-ffa450edef68

5 years agoEVP_PKEY_up_ref(): fix bad reference count locking.
Yann Ylavic [Thu, 25 Jun 2020 11:08:33 +0000 (11:08 +0000)] 
EVP_PKEY_up_ref(): fix bad reference count locking.

When enabling client authentication for proxy (SSLProxyMachineCertificateFile),
the client certificate callback function ssl_callback_proxy_cert uses another
reference count locking type then one that is used by the caller function when
trying to free the private key afterwards by using EVP_PKEY_free.

This can lead to a race-condition on pkey->references resulting in a double
free error.

On my system, the error occurs sporadically when threaded health checking
(mod_watchdog) forces two threads competing for the client's private key.

For example, see following two backtraces of a coredump where thread 1 and
thread 15 both run into CRYPTO_free(). Actually, the private key should never
be freed during run-time nor should two threads ever enter CRYPTO_free()
concurrently.

(gdb) t 1
[Switching to thread 1 (Thread 0xb2cfbb40 (LWP 16054))]
#0 0xf7f3f329 in __kernel_vsyscall ()
(gdb) bt
#0 0xf7f3f329 in __kernel_vsyscall ()
#1 0xf7cec9e7 in raise () from /lib32/libc.so.6
#2 0xf7cedfb9 in abort () from /lib32/libc.so.6
#3 0xf7d2a14d in ?? () from /lib32/libc.so.6
#4 0xf7d2fd27 in ?? () from /lib32/libc.so.6
#5 0xf7d3047d in ?? () from /lib32/libc.so.6
#6 0x08499c70 in CRYPTO_free (str=0x93376b0) at mem.c:434
#7 0x084cc063 in EVP_PKEY_free (x=0x93376b0) at p_lib.c:406
#8 0x08463917 in ssl3_send_client_certificate (s=0xad21f070) at s3_clnt.c:3475
#9 0x0845d62c in ssl3_connect (s=0xad21f070) at s3_clnt.c:426
#10 0x08484213 in SSL_connect (s=0xad21f070) at ssl_lib.c:1008
#11 0x0846f9c8 in ssl23_get_server_hello (s=0xad21f070) at s23_clnt.c:832
#12 0x0846ea45 in ssl23_connect (s=0xad21f070) at s23_clnt.c:231
#13 0x08484213 in SSL_connect (s=0xad21f070) at ssl_lib.c:1008
#14 0x08261e73 in ssl_io_filter_handshake (filter_ctx=0xb4d3f450) at ssl_engine_io.c:1245
#15 0x08263ba6 in ssl_io_filter_output (f=0xb4d3f480, bb=0xacc079a0) at ssl_engine_io.c:1760
#16 0x080ea2c9 in ap_pass_brigade (next=0xb4d3f480, bb=0xacc079a0) at util_filter.c:590
#17 0x08263b07 in ssl_io_filter_coalesce (f=0xb4d3f468, bb=0xacc079a0) at ssl_engine_io.c:1728
#18 0x080ea2c9 in ap_pass_brigade (next=0xb4d3f468, bb=0xacc079a0) at util_filter.c:590
#19 0x08251658 in hc_send (r=0xacc069b0, out=0x8c25ec8 "GET /hcheck HTTP/1.0\r\nHost: XXX\r\n\r\n", bb=0xacc079a0) at mod_proxy_hcheck.c:664
#20 0x08251eb3 in hc_check_http (baton=0xacc068d8) at mod_proxy_hcheck.c:806
#21 0x08252653 in hc_check (thread=0x8cc6b10, b=0xacc068d8) at mod_proxy_hcheck.c:870
#22 0x08383185 in thread_pool_func (t=0x8cc6b10, param=0x8c245e0) at misc/apr_thread_pool.c:266
#23 0x083baef6 in dummy_worker (opaque=0x8cc6b10) at threadproc/unix/thread.c:142
#24 0xf7ec615f in start_thread () from /lib32/libpthread.so.0
#25 0xf7da862e in clone () from /lib32/libc.so.6

(gdb) t 15
[Switching to thread 15 (Thread 0xb44feb40 (LWP 16049))]
#0 0xf7dd90a5 in _dl_addr () from /lib32/libc.so.6
(gdb) bt
#0 0xf7dd90a5 in _dl_addr () from /lib32/libc.so.6
#1 0xf7db610c in backtrace_symbols_fd () from /lib32/libc.so.6
#2 0xf7cd89ab in ?? () from /lib32/libc.so.6
#3 0xf7d2a148 in ?? () from /lib32/libc.so.6
#4 0xf7d2fd27 in ?? () from /lib32/libc.so.6
#5 0xf7d3047d in ?? () from /lib32/libc.so.6
#6 0x08499c70 in CRYPTO_free (str=0x93376b0) at mem.c:434
#7 0x084cc063 in EVP_PKEY_free (x=0x93376b0) at p_lib.c:406
#8 0x08463917 in ssl3_send_client_certificate (s=0xacf1baa0) at s3_clnt.c:3475
#9 0x0845d62c in ssl3_connect (s=0xacf1baa0) at s3_clnt.c:426
#10 0x08484213 in SSL_connect (s=0xacf1baa0) at ssl_lib.c:1008
#11 0x0846f9c8 in ssl23_get_server_hello (s=0xacf1baa0) at s23_clnt.c:832
#12 0x0846ea45 in ssl23_connect (s=0xacf1baa0) at s23_clnt.c:231
#13 0x08484213 in SSL_connect (s=0xacf1baa0) at ssl_lib.c:1008
#14 0x08261e73 in ssl_io_filter_handshake (filter_ctx=0xb4d37430) at ssl_engine_io.c:1245
#15 0x08263ba6 in ssl_io_filter_output (f=0xb4d37460, bb=0xad101588) at ssl_engine_io.c:1760
#16 0x080ea2c9 in ap_pass_brigade (next=0xb4d37460, bb=0xad101588) at util_filter.c:590
#17 0x08263b07 in ssl_io_filter_coalesce (f=0xb4d37448, bb=0xad101588) at ssl_engine_io.c:1728
#18 0x080ea2c9 in ap_pass_brigade (next=0xb4d37448, bb=0xad101588) at util_filter.c:590
#19 0x08251658 in hc_send (r=0xad100598, out=0x8c25898 "GET /hcheck HTTP/1.0\r\nHost: XXX\r\n\r\n", bb=0xad101588) at mod_proxy_hcheck.c:664
#20 0x08251eb3 in hc_check_http (baton=0xad1004c0) at mod_proxy_hcheck.c:806
#21 0x08252653 in hc_check (thread=0x8cc6ab0, b=0xad1004c0) at mod_proxy_hcheck.c:870
#22 0x08383185 in thread_pool_func (t=0x8cc6ab0, param=0x8c245e0) at misc/apr_thread_pool.c:266
#23 0x083baef6 in dummy_worker (opaque=0x8cc6ab0) at threadproc/unix/thread.c:142
#24 0xf7ec615f in start_thread () from /lib32/libpthread.so.0
#25 0xf7da862e in clone () from /lib32/libc.so.6

Many thanks to Armin for finding this.

Github: closes #129
Submitted by: Armin Abfalterer (arminabf)
Reviewed by: ylavic

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879179 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_http2: making filter names all uppercase again.
Stefan Eissing [Wed, 24 Jun 2020 14:36:18 +0000 (14:36 +0000)] 
mod_http2: making filter names all uppercase again.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879156 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879074: don't let dav_process_if_header() go above root.
Yann Ylavic [Wed, 24 Jun 2020 12:23:15 +0000 (12:23 +0000)] 
Follow up to r1879074: don't let dav_process_if_header() go above root.

And fall through as "/".

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879149 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879079: fail early if URI path resolves above root.
Yann Ylavic [Wed, 24 Jun 2020 12:11:08 +0000 (12:11 +0000)] 
Follow up to r1879079: fail early if URI path resolves above root.

Don't let it through as "/".

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879147 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879080: replace ProxyUseOriginalURI by mapping=encoded.
Yann Ylavic [Wed, 24 Jun 2020 10:16:06 +0000 (10:16 +0000)] 
Follow up to r1879080: replace ProxyUseOriginalURI by mapping=encoded.

Instead of having a separate ProxyUseOriginalURI directive to control pre_ vs
normal translate stage, let's handle this at each ProxyPass level, with the
mapping= parameter.

At pre_translate stage mod_proxy will handle the "encoded" mapping only, and
at translate stage only the others (unless a worker was already elected at
the first stage).

Note that since mapping=servlet needs to happen encoded too, it's defined like:
    #define PROXYPASS_MAP_ENCODED 0x08
    #define PROXYPASS_MAP_SERVLET 0x18 /* + MAP_ENCODED */
so uch that proxy_trans does the right thing.

Follow up to r1879080: replace ProxyUseOriginalURI by mapping=encoded.

Instead of having a separate ProxyUseOriginalURI directive to control pre_ vs
normal translate stage, let's handle this at each ProxyPass level, with the
mapping= parameter.

At pre_translate stage mod_proxy will handle the "encoded" mapping only, and
at translate stage only the others (unless a worker was already elected at
the first stage).

Note that since mapping=servlet needs to happen encoded too, it's defined like:
    #define PROXYPASS_MAP_ENCODED 0x08
    #define PROXYPASS_MAP_SERVLET 0x18 /* + MAP_ENCODED */
so that proxy_trans does the right thing.

This allows for simpler and consistent mapping configuration, where the
translate stage depends only on the mapping= parameter.

To implement a fast path (do nothing) when no encoded mapping is configured
at pre_trans stage, or all mappings are encoded at translate stage, two bits
are added to proxy_server_conf (map_encoded_one:1, map_encoded_all:1) and
updated at load time. Thus MINOR is bumped too.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879145 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879075: ap_getparents() to return the empty string above root.
Yann Ylavic [Wed, 24 Jun 2020 09:21:32 +0000 (09:21 +0000)] 
Follow up to r1879075: ap_getparents() to return the empty string above root.

Actually it was its previous behaviour before it was implemented using
ap_normalize_path() in r1879075.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879144 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879079, r1879080: change to DONE semantics for pre_trans hooks.
Yann Ylavic [Wed, 24 Jun 2020 07:47:58 +0000 (07:47 +0000)] 
Follow up to r1879079, r1879080: change to DONE semantics for pre_trans hooks.

Don't decode r->uri when pre_trans returns DONE instead of OK, which allows to
preserve previous behaviour where decoding was avoided for "ProxyRequests on"
or post_read_request RewriteRule [P] only, but not ProxyPass'ed requests.

This also preserves decoded location walk in most/same cases.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879137 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* modules/generators/mod_cgid.c (get_req): Add basic sanity
Joe Orton [Wed, 24 Jun 2020 07:32:36 +0000 (07:32 +0000)] 
* modules/generators/mod_cgid.c (get_req): Add basic sanity
  checking for the structure received in the CGI daemon.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879136 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* modules/generators/mod_cgid.c (cgid_handler): Bail immediately with
Joe Orton [Tue, 23 Jun 2020 16:39:25 +0000 (16:39 +0000)] 
* modules/generators/mod_cgid.c (cgid_handler): Bail immediately with
  a 503 response on errors when talking to the daemon.  Check the pid
  returned is not zero.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879119 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879079: merge slashes (if configured to) before pre_trans
Yann Ylavic [Tue, 23 Jun 2020 12:25:56 +0000 (12:25 +0000)] 
Follow up to r1879079: merge slashes (if configured to) before pre_trans

There are few cases (if any) where multiple slashes have different semantics
than a single one, and it's always been like that for proxy_trans anyway.

This allows for better directory/location/if walk caching and is less confusing
for their users.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879117 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879079: merge/walk locations for pre_trans hooks.
Yann Ylavic [Tue, 23 Jun 2020 11:58:53 +0000 (11:58 +0000)] 
Follow up to r1879079: merge/walk locations for pre_trans hooks.

So that their configurations work in directory context.

This requires potentially a third walk in ap_process_request_internal(),
though in most cases it should use ap_walk_location() cache.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879116 13f79535-47bb-0310-9956-ffa450edef68

5 years agoMark fdpassing test as failing.
Joe Orton [Tue, 23 Jun 2020 11:45:26 +0000 (11:45 +0000)] 
Mark fdpassing test as failing.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879115 13f79535-47bb-0310-9956-ffa450edef68

5 years agoap_location_walk/ap_directory_walk: copy the cached uri/filename.
Yann Ylavic [Tue, 23 Jun 2020 11:27:48 +0000 (11:27 +0000)] 
ap_location_walk/ap_directory_walk: copy the cached uri/filename.

Any in-place modification of r->uri of r->filename shouldn't affect the cache.

For instance, ap_process_request_internal() normalizes r->uri in place and yet
calls ap_location_walk() multiple times, which confuses caching.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879114 13f79535-47bb-0310-9956-ffa450edef68

5 years agoDisable mod_cgi to ensure mod_cgid is really being tested.
Joe Orton [Tue, 23 Jun 2020 11:14:19 +0000 (11:14 +0000)] 
Disable mod_cgi to ensure mod_cgid is really being tested.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879113 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879111: gcc suggests parentheses around ^ operator, oh well.
Yann Ylavic [Tue, 23 Jun 2020 10:32:43 +0000 (10:32 +0000)] 
Follow up to r1879111: gcc suggests parentheses around ^ operator, oh well.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879112 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879110: avoid signed comparison for use_original_uri.
Yann Ylavic [Tue, 23 Jun 2020 10:23:59 +0000 (10:23 +0000)] 
Follow up to r1879110: avoid signed comparison for use_original_uri.

And fix comment about default value.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879111 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879094: make use_original_uri signed for unsigned char archs.
Yann Ylavic [Tue, 23 Jun 2020 10:12:52 +0000 (10:12 +0000)] 
Follow up to r1879094: make use_original_uri signed for unsigned char archs.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879110 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFix YAML syntax.
Joe Orton [Tue, 23 Jun 2020 10:08:53 +0000 (10:08 +0000)] 
Fix YAML syntax.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879109 13f79535-47bb-0310-9956-ffa450edef68

5 years agoTest mod_cgid w/fdpassing.
Joe Orton [Tue, 23 Jun 2020 09:45:07 +0000 (09:45 +0000)] 
Test mod_cgid w/fdpassing.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879108 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd "v6only" Listen option to enable IPV6_V6ONLY in v4mapped builds
Joe Orton [Tue, 23 Jun 2020 08:45:07 +0000 (08:45 +0000)] 
Add "v6only" Listen option to enable IPV6_V6ONLY in v4mapped builds
where it is otherwise always disabled.

* include/ap_listen.h: Define AP_LISTEN_V6ONLY.

* server/listen.c (make_sock): Set v6only_setting to 1 if
  AP_LISTEN_V6ONLY flag is set for the listener.
  (parse_listen_flags): Parse "v6only" flag.

PR: 54878

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879106 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd workaround for IPv6 configuration on non-x86 hosts which
Joe Orton [Tue, 23 Jun 2020 07:24:03 +0000 (07:24 +0000)] 
Add workaround for IPv6 configuration on non-x86 hosts which
appears to fix the connection failures.  Almost certainly a bug
here, not at all sure where.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879103 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879076: axe stray copy/paste in pre_translate_name description.
Yann Ylavic [Mon, 22 Jun 2020 20:03:38 +0000 (20:03 +0000)] 
Follow up to r1879076: axe stray copy/paste in pre_translate_name description.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879095 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFollow up to r1879080: rename ProxyMappingDecoded to ProxyUseOriginalURI.
Yann Ylavic [Mon, 22 Jun 2020 20:00:23 +0000 (20:00 +0000)] 
Follow up to r1879080: rename ProxyMappingDecoded to ProxyUseOriginalURI.

Same for proxy_dir_conf field.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879094 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAllow for proxy servlet mapping at pre_translate_name stage.
Yann Ylavic [Mon, 22 Jun 2020 10:37:41 +0000 (10:37 +0000)] 
Allow for proxy servlet mapping at pre_translate_name stage.

Provide alias_match_servlet(), the servlet counterpart of alias_match(),
which maps the request URI-path to the ProxyPass alias ignoring path
parameters, while still forwarding them (above the alias).

This is needed to proxy servlet URIs for application handled by Tomcat,
which can then make use of the path/segments parameters.

Github: closes #128

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879080 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAllow for URI-path pre_translate_name before (and/or instead of) decoding.
Yann Ylavic [Mon, 22 Jun 2020 10:36:55 +0000 (10:36 +0000)] 
Allow for URI-path pre_translate_name before (and/or instead of) decoding.

Apply minimal normalization (AP_NORMALIZE_DECODE_UNRESERVED) first in
ap_process_request_internal() before running pre_translate_name hooks,
such that the hooks can work with undecoded r->uri.

Only if no hook takes "ownership" of the URI (returning OK), apply
percent decoding for the rest of request handling. Otherwise r->uri remains
encoded meaning that further location/directory/file/if/.. sections (walks)
should that into account.

Since normalization now happens before decoding, we might have to
re-normalize after decoding if "AllowEncodedSlahes on" transformed any
"%2F" sequence to "/", potentially creating new "/./" or "/../" sequences.

Note that for (lookup) subrequests, the path may be relative so we have
to allow for that.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879079 13f79535-47bb-0310-9956-ffa450edef68

5 years agoValidate request-target per RFC 7230 section 5.3.
Yann Ylavic [Mon, 22 Jun 2020 10:35:50 +0000 (10:35 +0000)] 
Validate request-target per RFC 7230 section 5.3.

RFC 7230 requires that the request-line URI be absolute, besides
"CONNECT authority-form" and "OPTIONS asterisk-form".

Enforce it in ap_parse_request_line().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879078 13f79535-47bb-0310-9956-ffa450edef68

5 years agoDeclare pre_translate hook in lua/info/log_debug/example modules, and docs.
Yann Ylavic [Mon, 22 Jun 2020 10:34:28 +0000 (10:34 +0000)] 
Declare pre_translate hook in lua/info/log_debug/example modules, and docs.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879077 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd pre_translate_name hook running before URI-path decoding.
Yann Ylavic [Mon, 22 Jun 2020 10:32:15 +0000 (10:32 +0000)] 
Add pre_translate_name hook running before URI-path decoding.

This allows any module to work with un-decoded URI-path (besides
unreserved characters) in r->uri, and eventually to avoid decoding by
returning OK.

The first candidate is mod_proxy (following commit) when
ProxyMappingDecoded is disabled, such that the forwarded URI is
equivalent to the original one.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879076 13f79535-47bb-0310-9956-ffa450edef68

5 years agoImplement ap_getparent() using ap_normalize_path().
Yann Ylavic [Mon, 22 Jun 2020 10:30:20 +0000 (10:30 +0000)] 
Implement ap_getparent() using ap_normalize_path().

It is functionaly the same as AP_NORMALIZE_ALLOW_RELATIVE flag, while
ap_normalize_path() is more efficient (single pass).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879075 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd ap_normalize_path() to replace ap_getparents() (with options).
Yann Ylavic [Mon, 22 Jun 2020 10:29:27 +0000 (10:29 +0000)] 
Add ap_normalize_path() to replace ap_getparents() (with options).

include/httpd.h: Declare ap_normalize_path() and flags.
    AP_NORMALIZE_ALLOW_RELATIVE:
        Don't require that the path be absolute as per RFC 7230.
        This is needed for lookup subrequests.
    AP_NORMALIZE_NOT_ABOVE_ROOT:
        Check that directory traversal ("..") don't go above root, or
        initial directory with relative paths.
    AP_NORMALIZE_DECODE_UNRESERVED:
        Decode unreserved characters (like '.') first since they have
        the same semantics encoded and decoded.
    AP_NORMALIZE_MERGE_SLASHES:
        Merge multiple slahes into a single one.
    AP_NORMALIZE_DROP_PARAMETERS:
        Ignore path parameters (";foo=bar"). Not used by httpd but since
        ap_normalize_path() is taken from mod_jk's jk_servlet_normalize()
        it can allow them to use the upstream version now.

server/util.c: Implement ap_normalize_path().

modules/dav/main/util.c: Replace call to ap_getparents() using
    ap_normalize_path() with AP_NORMALIZE_DECODE_UNRESERVED flag since
    the path comes from an obsolute URL (thus potentially %-encoded).

modules/generators/mod_autoindex.c: Replace call to ap_getparents() using
    ap_normalize_path() with AP_NORMALIZE_ALLOW_RELATIVE and
    AP_NORMALIZE_NOT_ABOVE_ROOT flags to be consistent with original code.

include/ap_mmn.h: MINOR bump for ap_normalize_path().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879074 13f79535-47bb-0310-9956-ffa450edef68

5 years agoBackported to 2.4.x
Jim Jagielski [Sat, 20 Jun 2020 14:25:02 +0000 (14:25 +0000)] 
Backported to 2.4.x

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879038 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAxe an empty line in a dox comment in order to synch with 2.4.x
Christophe Jaillet [Fri, 19 Jun 2020 20:10:22 +0000 (20:10 +0000)] 
Axe an empty line in a dox comment  in order to synch with 2.4.x

[skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879009 13f79535-47bb-0310-9956-ffa450edef68

5 years agoAdd a space to be consistent with surrounding code and to synch with 2.4.x
Christophe Jaillet [Fri, 19 Jun 2020 19:39:47 +0000 (19:39 +0000)] 
Add a space to be consistent with surrounding code and to synch with 2.4.x

[skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879007 13f79535-47bb-0310-9956-ffa450edef68

5 years agoOups, axe spurious copypasta.
Yann Ylavic [Fri, 19 Jun 2020 17:55:32 +0000 (17:55 +0000)] 
Oups, axe spurious copypasta.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879002 13f79535-47bb-0310-9956-ffa450edef68

5 years agoCHANGES entry for ap_proxy_define_match_worker().
Yann Ylavic [Fri, 19 Jun 2020 17:53:58 +0000 (17:53 +0000)] 
CHANGES entry for ap_proxy_define_match_worker().

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879001 13f79535-47bb-0310-9956-ffa450edef68

5 years agoap_proxy_define_match_worker: disable connection reuse by default.
Yann Ylavic [Fri, 19 Jun 2020 17:30:24 +0000 (17:30 +0000)] 
ap_proxy_define_match_worker: disable connection reuse by default.

To avoid compat issues with dns/connection reuse now that a worker with
dollar substitution can be elected.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879000 13f79535-47bb-0310-9956-ffa450edef68

5 years agoap_proxy_define_match_worker: don't copy the url unnecessarily.
Yann Ylavic [Fri, 19 Jun 2020 15:39:33 +0000 (15:39 +0000)] 
ap_proxy_define_match_worker: don't copy the url unnecessarily.

And save a few cycles, when the duplication is needed, by not copying
the ignored part.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878994 13f79535-47bb-0310-9956-ffa450edef68

5 years agoFor diagnosing weird non-x86 failures, dump /etc/hosts in future runs. [skip ci]
Joe Orton [Fri, 19 Jun 2020 15:33:19 +0000 (15:33 +0000)] 
For diagnosing weird non-x86 failures, dump /etc/hosts in future runs. [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878993 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_proxy_http: always stream the request body by default.
Yann Ylavic [Fri, 19 Jun 2020 14:52:08 +0000 (14:52 +0000)] 
mod_proxy_http: always stream the request body by default.

Simplify streaming by using Content-Length if the length is available, or
chunked Transfer-Encoding otherwise.

Spooling to memory/file will only be used for HTTP/1.0 requests or if
proxy-sendcl is set.

This removes the handling of proxy-sendchunked and proxy-sendchunks.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878991 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Revert r1878939, r1878938, r1878936, the changes to
Ruediger Pluem [Fri, 19 Jun 2020 11:45:16 +0000 (11:45 +0000)] 
* Revert r1878939, r1878938, r1878936, the changes to
  modules/http2/h2_request.c and CHANGES of r1878926 and r1878708 as a result of
  https://lists.apache.org/thread.html/red499ac4750b88e5943c25abb86434c59dfff4d4f386ffc53742755d%40%3Cdev.httpd.apache.org%3E
  and
  https://lists.apache.org/thread.html/ra79eee019e2357703b0ea81153458a29817b58ce92e3605949eee1fe%40%3Cdev.httpd.apache.org%3E

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878985 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Reset the request_rec fields protocol, proto_num and the_request also
Ruediger Pluem [Wed, 17 Jun 2020 18:48:22 +0000 (18:48 +0000)] 
* Reset the request_rec fields protocol, proto_num and the_request also
  in the error case and restructure code a little bit to avoid code
  duplication.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878939 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Reset the_request as well to reflect HTTP/2.0 [skip ci]
Ruediger Pluem [Wed, 17 Jun 2020 18:37:52 +0000 (18:37 +0000)] 
* Reset the_request as well to reflect HTTP/2.0 [skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878938 13f79535-47bb-0310-9956-ffa450edef68

5 years ago* Add comments to document why we do this.
Ruediger Pluem [Wed, 17 Jun 2020 18:33:20 +0000 (18:33 +0000)] 
* Add comments to document why we do this.
  No functional change. [skip ci].

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878936 13f79535-47bb-0310-9956-ffa450edef68

5 years ago *) mod_http2: workaround to facilitate use of common internal protocol/method/uri
Stefan Eissing [Wed, 17 Jun 2020 15:10:29 +0000 (15:10 +0000)] 
  *) mod_http2: workaround to facilitate use of common internal protocol/method/uri
     checks. The module now handles master/secondary connections and has marked
     methods according to use.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878926 13f79535-47bb-0310-9956-ffa450edef68

5 years agomod_ldap: Use the LDAP API directly to implement the rebind callback
Joe Orton [Tue, 16 Jun 2020 14:31:26 +0000 (14:31 +0000)] 
mod_ldap: Use the LDAP API directly to implement the rebind callback
for modern versions of OpenLDAP, avoiding the overhead of the apr-util
implementation.

* modules/ldap/util_ldap.c:
  Define USE_APR_LDAP_REBIND if a modern version of OpenSSL is used.
  (uldap_rebind_proc): New function.
  (uldap_rebind_init, uldap_rebind_add): Define, using either the
  callback or the (bad) APR-util versions.
  (uldap_connection_unbind): Clear the rebind pool to remove rebind
  references prior to destroying the LDAP *.
  Omit for !USE_APR_LDAP_REBIND.
  (uldap_connection_init): Use new wrappers, only create the rebind
  pool if USE_APR_LDAP_REBIND.

* include/util_ldap.h: Don't include apr_ldap_rebind.h here.

PR: 64414
Github: closes #124

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878890 13f79535-47bb-0310-9956-ffa450edef68

5 years agoUpdate Travis LDAP testing to use new container setup script
Joe Orton [Tue, 16 Jun 2020 14:07:53 +0000 (14:07 +0000)] 
Update Travis LDAP testing to use new container setup script
provided by test framework.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878889 13f79535-47bb-0310-9956-ffa450edef68

5 years agoxforms
Christophe Jaillet [Sun, 14 Jun 2020 09:13:52 +0000 (09:13 +0000)] 
xforms

[skip ci]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878826 13f79535-47bb-0310-9956-ffa450edef68